您的位置:首页 > 其它

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

2017-05-22 23:12 387 查看

什么是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-co
4000
re包下的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐