频道栏目
首页 > 资讯 > 其他 > 正文

Hibernate底层代码详解

16-11-24        来源:[db:作者]  
收藏   我要投稿

hibernate是一个持久化操作

运行原理:

1:hibernate.cfg.xml是配置文件,通过配置文件建立与数据库连接的信息(用户名,密码,数据库,数据库驱动)它通过mapping映射到需要与数据库关联的类

2:类.hm.xml映射文件,配置要操作的数据表的字段

3:pojo持久化类

1:创建一个Configuration的对象,用于加载配置文件

2:创建一个SessionFactory的工厂类,每个数据库只创建一个SessionFactory的工厂,用来创建session对象

3:创建一个Session对象,每一个客户端都有一个唯一的session与服务端进行交互(session封装了JDBC)

4:通过session的beginTransaction开启事物操作,(CRUD)

5:session的save方法保存事物,

6:session的commit方法,提交事物,将对象映射到数据表

7:通过ommit的close关闭事务,断开与数据表的连接

8:通过session的close关闭与数据库的对象关系映射

 

1:hibernate.cfg.xml(配置文件)

<?xml version="1.0" encoding="UTF-8"?> 
<!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>
  <!-- 配置连接数据库的基本信息 -->
<property name="connection.driver_class">com.MySQL.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://127.0.0.1:3306/mydatabase</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<!-- 配置HiberNate的基本信息 -->
<!-- HiberNate使用的数据库方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 操作是是否在控制台显示 -->
<property name="show_sql">true</property>
<!--是否对进行格式化  -->
<property name="format_sql">true</property>
<!--指定自定生成数据表的策略 -->
<property name="hbm2ddl.auto">update</property>
<mapping resource="com/study/hello/News.hbm.xml"/>
</session-factory>
</hibernate-configuration>

2:News.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">


<hibernate-mapping>
        <!--对象映射文件-->
    <class name="com.study.hello.News" table="news">
       <id name="id" type="java.lang.Integer">
            <column name="id"/>
            <!--指定主键的生成方式  -->
            <generator class="native"></generator>
       </id>
       <property name="title" type="java.lang.String">
        <column name="title" length="20"/>
       </property>
        <property name="author" type="java.lang.String">
        <column name="author" length="10"/>
       </property>
         <property name="date" type="java.sql.Date">
        <column name="date"/></property>
    </class>
</hibernate-mapping>

3:pojo持久化类

package com.study.hello;
import java.sql.Date;
/**
* pojo类与数据库映射
* @author Administrator
*
*/
public class News {
private Integer id;
private String title;
private String author;
private Date date;

public News() {
}


public News(String title, String author, Date date) {
this.title = title;
this.author = author;
this.date = date;
}


public String toString() {
return "News [id=" + id + ", title=" + title + ", author=" + author
+ ", date=" + date + "]";
}


public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}

}

 

4:javabean(对数据进行操作)

package com.study.hello;
import java.sql.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class TestNews {
public static void main(String[] args) {
// 1:下面的方法默认加载hibernate.cfg.xml文件
Configuration configuare = new Configuration().configure();
// 2:创建sessionFactory
SessionFactory ssssionFactory = configuare.buildSessionFactory();
// 3:创建session
Session session =ssssionFactory.openSession();
// 4:开始事务,Hibernate必须显式的手动提交事务
Transaction transaction = session.beginTransaction();
News news=new News("java","Admin",new Date(new java.util.Date().getTime()));
System.out.println(news);
// 5:保存
session.save(news);
// 6:提交事务
transaction.commit();
// 7:关闭session
session.close();
//8:关闭sessionFactory
ssssionFactory .close();
}
}

 

相关TAG标签
上一篇:DataNode启动优化改进:磁盘检测并行化
下一篇:Java设计模式之观察者模式
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站