创建类 HibernateUtil.java实现单例模式的SessionFactory。
- import org.hibernate.SessionFactory;
- import org.hibernate.cfg.Configuration;
- public class HibernateUtil {
- private static final Configuration config;
- private static final SessionFactory factory;
- static { // 静态初始化块,加载配置信息
- config = new Configuration().configure(); // 读取文件
- factory = config.buildSessionFactory();
- }
- public static Session getSessionFactory(){
- return factory;
- }
- }
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final Configuration config;
private static final SessionFactory factory;
static { // 静态初始化块,加载配置信息
config = new Configuration().configure(); // 读取文件
factory = config.buildSessionFactory();
}
public static Session getSessionFactory(){
return factory;
}
}
实现了session对象只被创建一次,避免了多次加载sessionfactory的负担。
- import org.hibernate.Session;
- import org.hibernate.Transaction;
- import org.junit.Test;
- public class Test {
- @Test
- public void select(){
- Session session = HibernateUtils.getSession();
- Transaction t = session.beginTransaction();
- }
- }
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
public class Test {
@Test
public void select(){
Session session = HibernateUtils.getSession();
Transaction t = session.beginTransaction();
}
}
在测试类中去调用静态代码块类就可以进行操作了。
用getCurrentSession()获得session
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import demo.entity.User;
- public class Test {
- public static void main(String[] args) {
- SessionFactory factory = HibernateUtil.getSessionFactory();
- //getCurrentSession()生成的Session不需要手动关闭,会在事务提交后自动关闭。
- Session session = factory.getCurrentSession();
- User user = new User();
- user.setUsername(”qqqqq”);
- user.setPassword(”qqqqq”);
- user.setNickname(”name1”);
- Transaction transaction = null;
- try {
- transaction = session.beginTransaction();
- session.save(user);
- //session.delete(user);//删除操作
- //User tmp = session.find(User.class, 1);//查找操作
- //session.update(user);//更新操作
- transaction.commit();
- } catch (Exception e) {
- if (transaction != null) {
- transaction.rollback();
- }
- e.printStackTrace();
- }
- }
- }
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import demo.entity.User;
public class Test {
public static void main(String[] args) {
SessionFactory factory = HibernateUtil.getSessionFactory();
//getCurrentSession()生成的Session不需要手动关闭,会在事务提交后自动关闭。
Session session = factory.getCurrentSession();
User user = new User();
user.setUsername("qqqqq");
user.setPassword("qqqqq");
user.setNickname("name1");
Transaction transaction = null;
try {
transaction = session.beginTransaction();
session.save(user);
//session.delete(user);//删除操作
//User tmp = session.find(User.class, 1);//查找操作
//session.update(user);//更新操作
transaction.commit();
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
}
}
}