1.概念
1.1.ORM(object/Relationship Mapping):对象/关系映射。
1.2.利用面向对象的思想编写的数据库应用程序最终都是把对象的信息保存在关系型数据库中,于是我们要编写很多和底层相关的SQL语句。
1.3.为什么不编写很多的SQL语句
1.3.1.不同的数据库使用不通的SQL语法。
1.3.2.同样的功能在不同的数据库实现的方式不同。
1.3.3.程序过分的依赖SQL语句,以后移植和维护性差。
2.Hibernate ORM(开源框架技术)
2.1.简介:对JDBC进行了非常轻量级的封装
2.2.作用
2.3.其他主流的ORM框架技术:MyBatis(iBatis)、Toplink
3.编写Hibernate例子
3.1.Hibernate Tool for Eclipse Plugins的安装
3.1.1.在Eclispse里面help选项中找到Install new Software中点击Add在弹传中Location填入
http://download.jboss.org/jbosstools/updates/development/indigo/
3.1.2.导入hibernate和mysql驱动jar包。
3.2.创建Hibernate的配置文件
3.2.1.右键点击项目名在new的other选项中找到hitbernate选择第一个Hibernate configuration file其他默认点击finish。
<?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.username">root</property>
<!-- 密码 -->
<property name="connection.password">***</property>
<!-- 加载驱动 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 连接数据库地址 -->
<property name="connection.url">jdbc:mysql://localhost/hibernate</property>
<!-- 方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show-sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<mapping resource="Students.hbm.xml"/>
</session-factory>
</hibernate-configuration>
3.3.创建持久化类
import java.util.Date;
/**
* 学生类
*
* @author tyhkmhjk
*
*/
public class Students {
/*
* 1.共有的类
* 2.提供共有的默认的不带参数的构造方法
* 3.属性私有
* 4.属性要使用setter和getter封装
*/
private long sid; // 学会
private String sname; // 姓名
private String gender; // 性别
private Date brithday; // 出生日期
private String address; // 地址
public Students() {
}
public Students(long sid, String sname, String gender, Date brithday,
String address) {
// super();
this.sid = sid;
this.sname = sname;
this.gender = gender;
this.brithday = brithday;
this.address = address;
}
public long getSid() {
return sid;
}
public void setSid(long sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSName(String sname) {
this.sname = sname;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getBrithday() {
return brithday;
}
public void setBrithday(Date brithday) {
this.brithday = brithday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Students [sid=" + sid + ", sname=" + sname + ", gender=" + gender
+ ", brithday=" + brithday + ", address=" + address + "]";
}
}
3.4.创建对象-关系映射文件上
3.4.1.在src右键在other中找到hibernate并选择第四个Hibernate XML Mapping file,点击next选择对象自动生成对象-关系映射文件。
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2016-9-1 14:38:01 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="Students" table="STUDENTS">
<id name="sid" type="long">
<column name="SID" />
<generator class="assigned" />
</id>
<property name="sname" type="java.lang.String" access="field">
<column name="SNAME" />
</property>
<property name="gender" type="java.lang.String">
<column name="GENDER" />
</property>
<property name="brithday" type="java.util.Date">
<column name="BRITHDAY" />
</property>
<property name="address" type="java.lang.String">
<column name="ADDRESS" />
</property>
</class>
</hibernate-mapping>
3.5.使用jUint4测试:项目右键创建源文件夹test并创建测试类StudentsTest
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class StudentsTest {
private SessionFactory sessionFactory;
private Session session;
private Transaction transation;
@Before
public void init(){
//创建配置对象
Configuration config = new Configuration().configure();
//创建服务注册对象
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
//创建会话工厂对象
sessionFactory = config.buildSessionFactory(serviceRegistry);
//创建会话对象
session = sessionFactory.openSession();
//开启事物
transation = session.beginTransaction();
}
@After
public void destory(){
//提交事物
transation.commit(); //提交事物
session.close(); //关闭会话
sessionFactory.close(); //关闭会话工厂
}
@Test
public void saveStudentTest(){
//生成学生对象
Students s1 = new Students(1,"zhangsanfen","男",new Date(), "武当山");
session.save(s1);
}
}
3.5.1.注解的含义
1)@Test:测试方法
2)@Before:初始化方法
3)@after:释放资源
3.6.测试
3.6.1.创建名为hibernate字符集为Utf-8的MySQL数据库
3.6.2.在StudentsTest类上选择saveStudentTest方法利用Junit4运行,则可以在数据库中发现自动根据实体类建立了数据表students
4.注意事项
4.1.注意配置文件中大小写问题,和配置文件属性、值的正确性
4.2.Junit4使用4.7或者4.8版本最好,过低过高可能会报错