初识Hibernate及简单的手动创建配置文件

来源:互联网 发布:2015年江苏省旅游数据 编辑:程序博客网 时间:2024/05/22 05:17

什么是Hibernate?

Hibernate是一个用于简化数据库操作的ORM框架。

什么是ORM?
O:Object,表示一般的JavaBean对象;
R:Relationship,表示数据库中的关系表;
M:Mapping,映射、关联的意思;
合起来,就是对象关系映射。

Hibernate有哪些优点?
1、更加的面向对象。(什么是面向对象?)
2、非侵入式的轻量级框架。(什么是非侵入式)
3、提高了开发的效率。
4、平台无关性,方便移植。

如何使用Hibernate?


1、导入Hibernate所需依赖(什么是依赖?)


<dependency>
 <groupId>org.hibernate</groupId>
 <artifactId>hibernate-core</artifactId>
 <version>5.2.10.Final</version>
</dependency>

2、配置hibernate.cfg.xml文件


步骤:
1)在src根目录下创建一个hibernate.cfg.xml文件。


2)找到配置模板(在<hibernate_home>/project/etc目录下的hibernate.cfg.xml文件)


<!DOCTYPE hibernate-configuration PUBLIC
?
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
?
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
 <session-factory>
  <!-- 这个属性为在控制台打印sql语句 -->
  <property name="show_sql">true</property>
  <!-- 指定Driver类的路径 -->
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <!-- 指定数据库的url,localhost:3306为数据库的IP和接口,db_hlh为数据库名称 -->
  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/db_hlh</property>
  <!-- 数据库的账号 -->
 
  <property name="hibernate.connection.username">root</property>
  <!-- 数据库的密码 -->
  <property name="hibernate.connection.password">123456</property>
  <!-- 关联数据库和Object的文件 -->
  <mapping resource="com/javen/demo/user.hbm.xml"></mapping>
 </session-factory>
</hibernate-configuration>

3、创建JavaBean对象并且配置bean.hbm.xml文件


1)在src目录下创建一个DTO包(DTO:data transfer object==JavaBean),并且在包里创建一个class,
所有属性全设为private并且为每个属性创建set和get方法。


2)在同一个包下面创建bean.hbm.xml文件(bean为对应的class名)


<?xml version="1.0"?>
<!-- DTD头文件可以在hibernate-core包下的org.hibernate包下的hibernate-mapping-dtd文件中查找 -->
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-5-15 10:36:21 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<!-- com.hehe.DTO.TbStudent为类名,tb_student为与之关联的表名,db_homework为表所在的数据库名(可以不要) -->
    <class name="com.hehe.DTO.TbStudent" table="tb_student" catalog="db_homework">
<!-- stuId一般为表的主键所对应的属性名,java.lang.Integer为stuId的类型 -->
        <id name="stuId" type="java.lang.Integer">
            <!-- stu_id为表的主键,identity为主键的生成策略中的一种(详细见附1) -->
            <column name="stu_id" />
            <generator class="identity" />
        </id>
<!-- stuName为JavaBean对象的属性名,string为stuName的类型 -->
        <property name="stuName" type="string">
<!-- stu_name为对应的字段名 -->
            <column name="stu_name" length="100" />
        </property>
    </class>
</hibernate-mapping>
 

4、初始化Hibernate并且获取session对象


Configuration cfg=new Configuration().configure();
SessionFactory factory=cfg.buildSessionFactory();
Session session=factory.openSession();

5、使用获取的session对象进行查、改、增、删


1)查找(使用最多的为下面的根据id(主键)查找)


session.get(param1,param2);-------->勤加载(不管需要不要一次性加载完)
param1:为想要查找的表对应的类名.class;
param2:为id;
返回的为param1对象
session.load(param1,param2);-------->懒加载(只有需要的时候才加载)
param1:为想要查找的表对应的类名.class;
param2:为id;
返回的为param1对象

2)修改(修改数据需要开启事务进行,只有提交事务后才能修改成功)


//首先根据ID查找出需要修改的表对应的对象
TeacherDTO teacher=session.get(TeacherDTO.class,4);
//修改某个字段的值
teacher.setTeacherName("曹老师");
//开启事务
Transaction transaction=session.beginTransaction();
//利用修改后的对象更新数据
session.update(teacher);
//提交事务
transaction.commit();
//关闭session
session.close();

3)新增(增加数据需要开启事务进行,只有提交事务后才能增加成功)


//创建一个对象
TeacherDTO teacher=new TeacherDTO();
//设置属性的值
teacher.setTeacherName("曹老师");
//开启事务
Transaction transaction=session.beginTransaction();
//将对象存入数据库中
session.save(teacher);
//提交事务
transaction.commit();
//关闭session
session.close();

4)删除(删除数据需要开启事务进行,只有提交事务后才能删除成功)


//开启事务
Transaction transaction=session.beginTransaction();
//首先根据ID查找出需要删除的表对应的对象
TeacherDTO teacher=session.get(TeacherDTO.class, 5);
//将数据库中对象对应的对应的那行删除
session.delete(teacher);
//提交事务
transaction.commit();
//关闭session
session.close()

附1:


Hibernate主键生成策略:


<generator class="" />
class的常用取值有:
assiggned:主键由外部程序负责生成,在save()之前指定一个id
native:由   Hibernate   根据使用的数据库自行判断采用   identity、hilo、sequence   其中一种作为主键生成方式。
identity:采用数据库提供的主键生成机制。如DB2、SQL   Server、MySQL   中的主键生成机制
sequence:采用数据库提供的sequence机制生成主键。如   Oralce   中的Sequence

阅读全文
0 0
原创粉丝点击