hibernate的入门学习

来源:互联网 发布:倒卖车辆数据 编辑:程序博客网 时间:2024/05/22 04:53

1.hibernate是一个ORM(Object Relational Mapping)框架,是一个开放源代码的对象,关系,映射框架.对jdbc一个简单轻量级的
封装。使用hibernate,就可以让java程序员面向对象的方式去操作数据库。没有使用hibernate的时候,是使用sql去操作数据库。
在数据库中表和表之间的关系是面向关系。以前是面向对象的方式去维护关系。使用了hibernate,这一切,都交给hibernate去处理。
hibernate是一个orm框架。(mybatis/ibatis)
持久层的框架
mvc 架构    - m(dao层中)
2。现在是使用mysql数据库。hibernate是夸数据库。每一个数据库软件,对标准的sql支持的可以能不太一样。但是hibernate可以
支持多种数据库。程序员只需要操作hibernate即可。hibernate自己会把java语法翻译成各个平台所需的sql脚本。


3.hibernate示例程序
1.创建表
use hibernate;
create table users(
 id int primary key auto_increment,
username varchar(20) not NULL,
password varchar(20) not NULL
)
2.导入hibernate,jar
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate3.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
log4j-1.2.17.jar
mysql-connector-java-5.1.13-bin.jar 数据库驱动包
slf4j-api-1.6.1.jar

3.创建实体类。
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
4.创建关系映射文件 xml文件,这个文件有命名规范。实体类名.hbm.xml
User.hbm.xml,在这个文件中要引入hibernate的xml配置的约束文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
   这个就是hibernate 映射文件所需的约束文件
建立类和表之间的 关系。
<hibernate-mapping>
<!-- 建立class和table之间的映射关系 -->
<!-- name 指的是哪一个类, table 是指哪一个表 -->
<class name="com.hk.bean.User" table="users">
<!-- 要建立每一个属性和表中的每一列的关系 -->
<!-- id,username,password -->
<!-- name表示属性名,column表示列明 -->
<id name="id" column="id">
<generator class="native"/>
</id>
<!-- type 表示 数据类型,可以使用hibernate对于String的类型,-->
<property name="username" column="username" type="string"/>
<property name="password" column="password" type="string"/>
</class>
</hibernate-mapping>
5.编写hibernate的核心配置文件。
编写hibernate程序和数据库的链接信息。
这个文件的文件名建议:hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<!-- 数据库链接驱动类 -->
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>

<!-- hibernate的方言 -->
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>

<!-- 可选的配置 -->
<!-- 打印创建的sql语句 -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>

</session-factory>
</hibernate-configuration>
6.编写测试代码
// 测试:hibernate的使用


// 使用hibernate插入一条数据


// 1.创建配置对象
// 只用调用configure()方法才算真真的加载核心配置文件。
Configuration configuration = new Configuration().configure();


// 2.创建sessionFactory对象
SessionFactory sessionFactory = configuration.buildSessionFactory();


// 3.创建session对象去操作数据库
Session session = sessionFactory.openSession();


// 4.获取事物对象
// 开启事物
Transaction transaction = session.beginTransaction();


// 执行保存操作。
User user = new User();
user.setUsername("lw38");
user.setPassword("38lw");
// 向数据库插入User这个对象的数据。
session.save(user);
// 提交事物
transaction.commit();
// 释放资源
session.close();
sessionFactory.close();
7,完成映射文件和配置文件关联过程
要让hibernate知道映射文件在哪里?


使用hibernate根据主键查询
User user = (User) session.get(User.class, 2);
User user = (User) session.load(User.class, 2);
get方法,直接查询,load方法,采用延时加载技术,不是直接查询,执行load方法的时候,并不是直接去加载数据库
而是在等到使用被加载的对象的时候,才会去加载数据库
区别:1.get方法会直接发送sql,而load方法会使用到改对象的时候才发送sql
2.get方法得到的对象就是对象本身,而load方法得到的对象是该对象的代理对象。
思考:为什么load方法得到的对象中会有延时加载的特性?
hibernate 将被加载的对象中的方法全部重写,方法的第一步就是去数据库加载数据。代理模式,方法返回的是对象的代理对象。







原创粉丝点击