Hibernate configure using java @Bean
annotation
@Configuration
@ComponentScan(basePackages = {"com.worldofshopping.BackendShop"})
@ComponentScan(basePackages = {"com.worldofshopping"})
@EnableTransactionManagement
public class HibernateConfig {
BasicDataSource dataSource;
// Change the below final variable value based on database you choose
private final static String DATABASE_URL = "jdbc:h2:~/rahul";
private final static String DATABASE_DRIVER = "org.h2.Driver";
private final static String DATABASE_DIALECTS = "org.hibernate.dialect.H2Dialect";
private final static String DATABASE_USERNAME = "sa";
private final static String DATABASE_PASSWORD = "sa";
// Database will be available
@Bean("dataSource")
public DataSource getSource() {
dataSource = new BasicDataSource();
// Providing database connection Information
dataSource.setDriverClassName(DATABASE_DRIVER);
dataSource.setUrl(DATABASE_URL);
dataSource.setUsername(DATABASE_USERNAME);
dataSource.setPassword(DATABASE_PASSWORD);
return dataSource;
}
// Database will be available
@Autowired
@Bean
public SessionFactory getSessionFactory(DataSource datasource) {
LocalSessionFactoryBuilder builder = new LocalSessionFactoryBuilder(dataSource);
builder.addProperties(getHibernateProperties());
builder.scanPackages("com.worldofshopping.BackendShopndShop.dto");
return builder.buildSessionFactory();
}
// For Hibernate property return
private Properties getHibernateProperties() {
Properties properties = new Properties();
properties.put("hibernate.dialect", DATABASE_DIALECTS);
properties.put("hibernate.show_sql", "true");
properties.put("hibernate.format_sql", "true");
properties.put("hibernate.hbm2ddl.auto", "update");
return properties;
}
// HibernateTransactionManager
@Autowired
@Bean
public HibernateTransactionManager getTransactionManagement(SessionFactory sessionFactory) {
HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory);
return transactionManager;
}
}
@Repository("userDao")
@Transactional
public class Userdaoimpl implements Userdao {
@Autowired(required = true)
private SessionFactory sessionFactory;
@Override
public User getUserByUsername(String email) {
String command = "from User where email=:parameter";
Query<User> query = sessionFactory.getCurrentSession().createQuery(command, User.class);
query.setParameter("parameter", email);
try {
return query.getSingleResult();
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
@Override
public boolean add(User user) {
try {
Cart cart = new Cart();
cart.setUser(user);
user.setCart(cart);
sessionFactory.getCurrentSession().save(user);
return true;
} catch (Exception msg) {
msg.printStackTrace();
System.out.println(msg);
return false;
}
}
@Override
public boolean update(User user) {
try {
sessionFactory.getCurrentSession().update(user);
return true;
} catch (Exception msg) {
msg.printStackTrace();
System.out.println("Something error occured during Update " + msg);
return false;
}
}
@Override
public boolean delete(String email) {
User user = getUserByUsername(email);
user.setEnabled(false);
try {
sessionFactory.getCurrentSession().update(user);
return true;
} catch (Exception msg) {
msg.printStackTrace();
System.out.println("Something error occured during delete");
return false;
}
}
@Override
public User getUserById(Long user_id) {
try {
return sessionFactory.getCurrentSession().get(User.class, Long.valueOf(user_id));
} catch (Exception msg) {
msg.printStackTrace();
System.out.println("Something error occured during Update");
return null;
}
}
}
Main method:
public class App {
public static void main(String[] args) {
User user = new User();
user.setAddress("New Delhi");
user.setContact("9988776655");
user.setEmail("komal@gmail.com");
user.setEnabled(true);
user.setName("Komal");
user.setPassword("komal");
user.setRole("CUSTOMER");
Userdao userdao = new Userdaoimpl();
userdao.add(user);
}
}
Exception stack trace:
java.lang.NullPointerException java.lang.NullPointerException at com.worldofshopping.BackendShop.daoimpl.Userdaoimpl.add (Userdaoimpl.java:37) at com.worldofshopping.BackendShop.App.main(App.java:25)
Anyone please help I m already start transaction using @Repository("userDao") @Transactional
I'm also try to run on junit but still get same error!!