Hibernate操作数据库之基础操作
程序员文章站
2022-06-01 17:05:46
...
添加用户(基础操作)
@Test
public void testAdd(){
//第一步:加载hibernate核心配置文件
//理解:在src下面找到名称是hibernate。cfg.xml
//在hibernate里面封装对象
Configuration configuration = new Configuration();
configuration.configure();
//第二步:创建SeeeionFactory对象
//理解:读取hibernate核心配置文件内容,创建SessionFactory对象
//在过程中,根据映射关系,在配置数据库里面把表创建
SessionFactory sessionFactory = configuration.buildSessionFactory();
//第三步:使用SessionFactory创建Session对象
//理解:类似于jdbc的连接数据库
Session session = sessionFactory.openSession();
//第四步:开启事务
Transaction transaction = session.beginTransaction();
//第五步:写具体的crud操作
User user = new User();
user.setUsername("寒诩");
user.setPassword("23");
user.setAddress("齐齐哈尔");
//调用session方法实现添加
session.save(user);
//第六步:提交事务
transaction.commit();
//第七步:关闭资源
session.close();
sessionFactory.close();
}
添加用户(封装一)
- 工具类HibernateUtils
public class HibernateUtils {
/**
* 用于生产SessionFactory对象
* SessionFactory对象产生耗资源,故只生产一个SessionFactory对象
*/
private static final Configuration configuration;
private static final SessionFactory sessionFactory;
static {
configuration = new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
}
//提供方法返回与本地线程绑定的session对象的方法
public static Session getSessionObject(){
return sessionFactory.getCurrentSession();
}
//提供方法返回SessionFactory对象
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static void main(String[] args) {
}
}
- curd操作
@Test
public void testAdd(){
SessionFactory sessionFactory = HibernateUtils.getSessionFactory();
//第一步:使用SessionFactory创建Session对象
//理解:类似于jdbc的连接数据库
Session session = sessionFactory.openSession();
//第二步:开启事务
Transaction transaction = session.beginTransaction();
//第三步:写具体的crud操作
User user = new User();
user.setUsername("寒诩");
user.setPassword("23");
user.setAddress("齐齐哈尔");
//调用session方法实现添加
session.save(user);
//第四步:提交事务
transaction.commit();
//第五步:关闭资源
session.close();
sessionFactory.close();
}
添加用户(封装二)
- 工具类HibernateUtils
public class HibernateUtils {
/**
* 用于生产SessionFactory对象
* SessionFactory对象产生耗资源,故只生产一个SessionFactory对象
*/
private static final Configuration configuration;
private static final SessionFactory sessionFactory;
static {
configuration = new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
}
//提供方法返回与本地线程绑定的session对象的方法
public static Session getSessionObject(){
return sessionFactory.getCurrentSession();
}
//提供方法返回SessionFactory对象
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static void main(String[] args) {
}
}
- curd操作
@Test
public void testUpdateDemo1(){
Session session = null;
Transaction transaction = null;
try {
//1.使用SessionFactory创建Session对象
//理解:类似于jdbc的连接数据库
session = HibernateUtils.getSessionObject();
//2.开启事务
transaction = session.beginTransaction();
//3.写具体的crud操作
//让某个用户具有某个角色
//3-1.根据id查询需要添加角色的用户和需要添加的角色
User user = session.get(User.class, 1);
Role role = session.get(Role.class, 2);
//3-2.给用户对象的set集合添加所需角色对象
user.getSetRole().add(role);
//4.提交事务
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
//5.回滚事务
transaction.rollback();
} finally {
//6.关闭资源 在使用了与本地线程绑定的session对象之后,就不需要手动关闭session了
session.close();
}
}