- 什么是hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。
优势:跨数据库的无缝移植
代码讲解:
1.新建maven工程—》在 https://mvnrepository.com/ 搜索 pom.xml 里面配置自己所需要的jar包
2.新建一个xml包
4.演示新增功能
public class Add {
public static void main(String[] args) {
/**
* 1.对hibertnate.cfg.xml建模
* 2.通过建模所得到的config文件类,获取所配置的sessionfactory
* 3.获取session会话
* 4.开启事务
* 5.操作数据库
* 6.提交事务
* 7.关闭session会话
*/
//对应以上七步操作
Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
//数据操作
User user = new User();
user.setBirthday(new Date(new java.util.Date().getTime()));
user.setReal_name("麻子");
user.setUser_name("粒子");
user.setSex("女");
user.setRemark("性别男,爱好人类");
user.setUser_pwd("123456");
session.save(user);
transaction.commit();//提交
session.close();//关闭
}
}
运行后控制台的展示,新增成功
- OID属性
与数据库主键列映射的属性
SessionFactory对象的创建代价很昂贵,它是线程安全的对象,它为所有的应用程序线程所共享。它只创建一次,通常是在应用程序启动的时候,由一个Configuraion的实例来创建
Session对象的创建代价比较小,是非线程安全的,对于单个请求,单个会话、单个的 工作单元而言,它只被使用一次,然后就丢弃。只有在需要的时候,一个Session对象 才会获取一个JDBC的Connection(或一个Datasource) 对象,因此假若不使用的时候它不消费任何资源。
Hibernate3.3.2版本中getSession().connection()已被弃用,hibernate4中官方推荐使用Session doWork()方法进行jdbc操作