Question: i am currently learning to code in hibernate and going through some blogs.I came across the following line which says -
**`"JDBC API throws SQLException that is a checked exception, so we need to write a lot of try-catch block code. Most of the times it’s redundant in every JDBC call and used for transaction management. Hibernate wraps JDBC exceptions and throw JDBCException or HibernateException un-checked exception, so we don’t need to write code to handle it. "`**

I know that SQL Exception is a compile time exception and need to be handled.But i am not getting the concept of wrapping a checked exception and throwing it as a non-checked exception.If we can convert a checked to non-checked exception, then why cant we do the same for every checked exception in Java.I understand that i am missing some logic here but please help me out in this.Also,
Can someone explain the real advantage of this?

Answer: 
This here

```
node *head

```

Defines a pointer to a `node`, and calls that pointer `head`.

```
=NULL;

```

Here, `NULL` is assigned to it. According to [this](https://en.cppreference.com/w/cpp/types/NULL), `NULL` is:

> 
> The macro NULL is an implementation-defined null pointer constant,
>  which may be
> 
> 
> an integral constant expression rvalue of integer type that evaluates
>  to zero (until C++11)
> 
> 
> an integer literal with value zero, or a prvalue of type
>  std::nullptr\_t (since C++11)
> 
> 
> 

In the end, the result is that `head` holds a value of `0`. This way it can be queried, for instance using `if (head == NULL){...` or something similar.

When `NULL` is assigned to a pointer, this usually signifies that it's not pointing to a valid object (yet).
`NULL` is the macro defined for representing a pointer without a defined address. You can read more about in <https://en.cppreference.com/w/cpp/types/NULL>