关于hibernate的一些小东西,,,谁还没个第一次啊

      在经历了大学三年的磨练后,终于决定要自己写一篇博客了,虽然可能没人看,但是还是要写一写,锻炼一下自己嘛。那么好,第一个博客的内容就定为“关于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的框架运用总是不是很熟练,总需要通过百度,或者室友的帮助来解决,在课下我会积极地将这些问题参透并解决,争取在今后的学习中,解决这些难题。

      不知不觉自己已经爱上写博客了,在以后的生活中,我争取每周都完成一篇博客来记录自己学习中的点点滴滴,并且其他大佬也可以来评论给出建议,小弟一定虚心接受。

猜你喜欢

转载自blog.csdn.net/FuBo_1996/article/details/80212525
今日推荐