在经历了大学三年的磨练后,终于决定要自己写一篇博客了,虽然可能没人看,但是还是要写一写,锻炼一下自己嘛。那么好,第一个博客的内容就定为“关于Hibernate的一些小东西”。好,我们开始吧。
首先,让我们了解一下Hibernate:
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,Hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
那么,Hibernate有什么优点呢?
1、封装了jdbc,简化了很多重复性代码。
2、简化了DAO层编码工作,使开发更对象化了。
3、移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变hibernate代码。
4、支持透明持久化,因为hibernate操作的是纯粹的(pojo)java类,没有实现任何接口,没有侵入性。所以说它是一个轻量级框架。
我们现在开始动手实现一个小的练习:
第一步:数据库建立
CREATE TABLE `t_emp` (
`id` int(20) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`sex` varchar(1) DEFAULT NULL,
`address` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
第二步:创建实体类
package com.hust.fubo;
public class Person {
private int id;
private String name;
private String sex;
private String address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String toString() {
return "Person [id=" + id + ", name=" + name + ", sex=" + sex
+ ", address=" + address + "]";
}
}
第三步:创建数据库连接
<?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">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.url">jdbc:mysql://127.0.0.1:3306/emp?serverTimezone=UTC</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<mapping resource="com/hust/mo/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
第四步:配置实体类相应的.hbm.xml文件
<?xml version="1.0"?>
<!--
~ Hibernate, Relational Persistence for Idiomatic Java
~
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
-->
<!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.hust.mo.Person" table="t_emp">
<id name="id" column="id" >
<generator class="native"/>
</id>
<property name="name" column="name" type="string" />
<property name="sex" column="sex" type="string" />
<property name="address" column="address" type="string" />
</class>
</hibernate-mapping>
第五步:测试类
package com.hust.fubo;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
public class TestDemo {
@Test
public void testPerson(){
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction t = session.beginTransaction();
Person p = (Person) session.get(Person.class, 1);
System.out.println(p.toString());
t.commit();
session.close();
sessionFactory.close();
}
}
运行结果展示:
总结:第一次自己写博客,虽然出现了大大小小的问题,但总的来说还可以,毕竟是第一次嘛。遇到的问题中最让我印象深刻的是在编写代码中hibernate的框架运用总是不是很熟练,总需要通过百度,或者室友的帮助来解决,在课下我会积极地将这些问题参透并解决,争取在今后的学习中,解决这些难题。
不知不觉自己已经爱上写博客了,在以后的生活中,我争取每周都完成一篇博客来记录自己学习中的点点滴滴,并且其他大佬也可以来评论给出建议,小弟一定虚心接受。