Hibernate入门(一:简单配置)

最近公司要重新整一套可以供不同team的人上传测试虚拟寂摸版,在Lab中自动发现新build,自动部署,运行,发出通知的系统。原来的系统是在一个Web应用中包含了所有的逻辑,扩展性差,不够稳定。目前我负责把原来的Web层相关的内容剥离出来。

由于原来的系统在Web上使用了Spring+Hibernate来实现数据的持久化,本人这方面接触较少,所以正好乘此机会从头学习一下。

码工们都知道,计算机学习的最好方法就是找一些简单的例子,把程序包起来。所以首先就是通过搭一个简单的使用Hibernate的程序(针对MySQL)

要使用Hibernate,主要要用到以下一些包:

1:ejb3-persistence-1.0.jar

2:hibernate-3.6.1.jar

3:mysql-connector-java-5.1.15-bin.jar

4:slf4j-api-1.6.1.jar,slf4j-simple-1.6.1.jar

5:c3p0-0.9.1.jar


Hibernate,其实就是把数据库中的表结构映射为Java类,也就是常说的POJOs。首先我们建一个类:

package com.hibernate.model;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;;


public class Student {
	 	private int id;
	    private String name;
	    private  int age;


	    public int getId() {
	        return id;
	    }
	    public String getName() {
	        return name;
	    }
	    public int getAge() {
	        return age;
	    }
	    public void setId(int id) {
	        this.id = id;
	    }
	    public void setName(String name) {
	        this.name = name;
	    }
	    public void setAge(int age) {
	        this.age = age;
	    }	

}

这个类和数据库中的student表对应:

 Field | Type        | Null | Key | Default
-------+-------------+------+-----+---------
 id    | int(4)      | NO   | PRI | 0
 name  | varchar(20) | YES  |     | NULL
 age   | int(4)      | YES  |     | NULL


然后编辑Student.hbm.xml,用来把这个Java类和表建立映射关系

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >

<hibernate-mapping package="com.hibernate.model">
	<class name="Student" table="student">
		<id name="id"></id>
		<property name="name"/>
		<property name="age"/>
	</class>
	
	
</hibernate-mapping>

下面就是编辑hibernate.cfg.xml,用来描述一些数据库连接等方面的问题。

<?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">

<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost/test</property>
        <property name="connection.username">root</property>
        <property name="connection.password">abcd1234.</property>
        <property name="connection.characterEncoding">UTF-8</property>
        <property name="connection.autoReconnect">true</property>
        <property name="connection.autoReconnectForPools">true</property>
        <property name="connection.is-connection-validation-required">true</property>
		
        <!-- JDBC connection pool c3p0-->     
		<property name="hibernate.c3p0.acquire_increment">3</property>
        <property name="hibernate.c3p0.idle_test_period">120</property>
        <property name="hibernate.c3p0.min_size">3</property>
		<property name="hibernate.c3p0.max_statements">50</property>
        <property name="hibernate.c3p0.max_size">10</property>
        <property name="hibernate.c3p0.timeout">1800</property>
     	<property name="hibernate.c3p0.automaticTestTable">C3P0TestTable</property> 
        <property name="hibernate.c3p0.validate">true</property>                 

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">update</property>
        <mapping resource="com/hibernate/model/Student.hbm.xml"/>
        
      
    </session-factory>
</hibernate-configuration>

到这里,Hibernate的配置就基本已经完成了。接下来我们通过一个Test类来看一下简单的使用:

package com.hibernate.model;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import java.util.List;
import java.util.Iterator;

public class StudentTest {
	
	public static void main(String[] args) {
		StudentTest.AddUser();
		StudentTest.ListUser();
    }
	public static void AddUser(){
      Student s = new Student();
      s.setId(2);
      s.setAge(23);
      s.setName("jack2");
      
      
      SessionFactory sf = new Configuration().configure().buildSessionFactory();
      Session session = sf.openSession();
      session.beginTransaction();
      
      session.save(s);
      session.getTransaction().commit();
      session.close();
      sf.close();
	}
	public static void ListUser(){
		SessionFactory sf = new Configuration().configure().buildSessionFactory();
		Session session = sf.openSession();
		List users = session.createQuery("from Student").list();
		System.out.println("Found" + users.size() + "users");
		Iterator i = users.iterator();
		while(i.hasNext()){
			Student s = (Student)i.next();
			System.out.println(s.getName() + ":" + s.getAge());
		}
		session.close();
	}
}

在输出屏幕上可以看到相应的执行过程。查看数据库,发现数据已经成功插入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值