1. 持久化
- 侠义概念:数据存储在物理存储介质不会丢失。
- 广义概念:也就是对数据的crud操作都叫持久化。
- 加载:hibernate里的,数据从数据库中加载到session。
2. ORM(object relation mapping)
imageimage解决阻抗不匹配(对象和关系数据库不匹配)问题。
没有侵入性:在代码中不用去继承hibernate类或实现hibernate提供接口
Hibernate:是一个orm的轻量级框架;解决持久化操作,使得程序员可以从编写繁复的jdbc工作中解放出来。专注于业务。提高程序员开发效率。移植性。
3. 编写配置文件hibernate.cfg.xml文件,放入到项目中src下:
<hibernate-configuration>
<session-factory>
<!-- 配置数据库连接信息 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate4</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- 设置方言,hibernate会根据数据库的类型相应生成SQL语句 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
</session-factory>
</hibernate-configuration>
4. 创建数据库表,以及对应的pojo对象
public class User {
private int id;
private String name;
private String pwd;
}
5. 编辑*.hbm.xml文件,文件名一般为pojo类的名称User.hbm.xml,放在pojo类所在的包下
<hibernate-mapping>
<class name="cn.siggy.pojo.User" table="user">
<id name="id">
<!-- 主键生成策略 -->
<generator class="native"></generator>
</id>
<!-- 实体类的属性 -->
<property name="name"/>
<property name="pwd"/>
</class>
</hibernate-mapping>
6. 测试:将*.hbm.xml配置文件加入到hibernate.cfg.xml中
public static void main(String[] args) {
//1.新建Configuration对象
Configuration cfg = new Configuration().configure();
//2.通过Configuration创建SessionFactory对象
//在hibernate3.x中是这种写法
//SessionFactory sf = cfg.buildSessionFactory();
//hibernate4.3之前~hibernate4.0
// ServiceRegistry sr = new ServiceRegistryBuilder()
// .applySettings(cfg.getProperties())
// .buildServiceRegistry();
//hibernate4.3
ServiceRegistry registry = new StandardServiceRegistryBuilder()
.applySettings(cfg.getProperties())
.build();
SessionFactory sf = cfg.buildSessionFactory(registry);
//或者
//SessionFactory sf = cfg.buildSessionFactory();
//3.通过SessionFactory得到Session
Session session = sf.openSession();
//4.通过session对象 得到Transaction对象
//开启事务
Transaction tx = session.beginTransaction();
//5.保存数据
User user = new User();
user.setName("张三疯");
user.setPwd("1111");
session.save(user);
//6.提交事务
tx.commit();
//7.关闭session
session.close();
}
网友评论