初识Hibernate
2016-09-27 12:28
357 查看
ORM原理
ORM(对象到关系的映射),ORM的作用是在关系数据库和对象之间做一个自动映射,将数据库中的数据表映射成为对象,即持久化类。以对象的形式操作数据库,可以减少应用开发过程中数据持久化的编程任务。我们可以把ORM理解为关系型数据库和对象的一条纽带,开发人员只需关注纽带一端映射的对象即可。而Hibernate是ORM的佼佼者。Hibernate三个重要类
1)配置类(Configuration):负责Hibernate的配置信息及启动,该类会读取底层一些实现的基本信息,包括数据库的URL,数据库用户名、密码以及数据库驱动类和数据库适配器类。2)会话工厂类(Session Factory):生成Session的工厂,保存当前数据库中所有的映射关系。
3)会话类(Session):负责Hibernate所有持久化的操作,通过它可以实现数据库的基本增删改查操作。该类不安全,应该注意不要多个线程共享一个Session。
Hibernate配置文件hibernate.cfg.xml的设置
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="connection.url"> jdbc:mysql://localhost:3306/db_database </property> <property name="connection.username">root</property> <property name="connection.password">root</property> <!-- Hibernate方言 --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="myeclipse.connection.profile">MySQL5.0</property> <!-- Hibernate sql语句是否展示--> <property name="show_sql">true</property> <property name="hbm2ddl.auto">create</property> <!-- create作用为每执行一次先删除表再新建表 update为不改变原来的表,在原表上操作 --> <!-- Hibernate 映射文件--> <mapping resource="com.cqut.user.hbm.xml" /> </session-factory> </hibernate-configuration>
Hibernate映射文件*.hbm.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse - Hibernate Tools --> <hibernate-mapping> <class name="com.cqut.user " table="tb_table"> <id name="id" column="id" type="int"> <generator class="nactive"> <!-- id标签设置表的主键 nactive设置的是表主键自动递增(但主键类型必须为int型) class为assigned设置id由程序生成 --> </id> <property name="name" type="String"><!-- 持久化类的属性名 --> <column name="name" length="50" /><!-- 数据库表中的字段名 --> </property> <property name="age" type="int"> <column name="age" /> </property> </class> </hibernate-mapping>
持久化类
public class User { private int id; private String name; private int age; public User() { //必须存在一个空构造方法 } public User(int id,String name,int age){ this.id = id; this.name = name; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
hibernate数据操作
1)Configuration对象会加载Hibernate的基本配置信息,如果没有在configure()方法中指定加载配置XML文档的路径信息,Configuration对象会默认加载项目classpath根目录下的hibernate.cfg.xml文件。2)SessionFactory是线程安全的,但Session不是,为了保证Session的线程安全,可以引人ThreadLocal对象避免多线程之间的数据共享。
3)事务回滚:transction.rollback();或者session.getTransction().rollback();
public class TestHibertnate { private static SessionFactory sessionFactory; private static Session session; private static Transaction transction; public static void main(String[] args) { //创建配置对象、创建服务注册对象、创建会话工厂、实例会话、开启事务 Configuration cfg = new Configuration().configure(); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry(); sessionFactory = cfg.buildSessionFactory(serviceRegistry); session = sessionFactory.openSession(); transction = session.beginTransaction(); //保存用户 User user = new User(1,"林柏云", 22); session.save(user); //事务提交、资源释放 transction.commit(); session.close(); sessionFactory.close(); } }
session操作数据的方法
1)增:save(obj)2)删:delete(obj)
3)改:update(obj)或者
User user = (User) session.get(User.class, 1); user.setName("linboyun"); //事务提交、资源释放 transction.commit();4)查:get(User.class,1)或者load(User.class,1) (1为id)
get():直接发送sql语句查找。
load():返回代理对象,只有真正使用的时候才发送sql语句。
Hibernate的缓存
1)缓存是是数据库在内存中的临时容器,可以使用它更高效的执行数据库的持久性操作。2)使用一级缓存:针对session层,不同session之间不能共享一级缓存。
3)二级缓存:针对SessionFactory层。
相关文章推荐
- Hibernate初识
- hibernate 学习笔记一(初识hibernate)
- 【Hibernate】(1)初识Hibernate
- 初识hibernate,使用idea maven项目搭建
- 【Hibernate】初识了解
- 初识Hibernate之理解持久化类
- 初识Hibernate
- 初识Hibernate(一)之配置文件以及框架搭建
- 初识Hibernate
- 初识hibernate 2
- 初识J2EE框架(struts+hibernate+spring)
- Hibernate(一)Hibernate初识
- 初识Hibernate之理解持久化类
- 初识Hibernate之关联映射
- 初识Hibernate(二)之简单操作
- Hibernate 初识
- 初识hibernate
- Hibernate Session初识
- hibernate学习(二)----初识标签
- Hibernate(3.6)之初识