在经历了大学三年的磨练后,终于决定要自己写一篇博客了,虽然可能没人看,但是还是要写一写,锻炼一下自己嘛。那么好,第一个博客的内容就定为“关于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的框架运用总是不是很熟练,总需要通过百度,或者室友的帮助来解决,在课下我会积极地将这些问题参透并解决,争取在今后的学习中,解决这些难题。
不知不觉自己已经爱上写博客了,在以后的生活中,我争取每周都完成一篇博客来记录自己学习中的点点滴滴,并且其他大佬也可以来评论给出建议,小弟一定虚心接受。