今天第一次使用了hibernate框架成功的实现想数据库里插入数据,初次使用可能会觉得很麻烦,但是相比较在web开发中使用原始的拼SQL语句的方法,确实方便许多.
使用hibernate,我下载的是hibernate-annotations-3.4.0.GA.zip,hibernate-distribution-3.3.2.GA-dist.zip和slf4j-1.5.8.zip,这三个压缩包都是在官网上下载下来的,如果你使用的不是这三个版本,那么就得到官网上查查版本之间的对应关系,因为如果版本匹配的话,可能会在编译期间会出现一些意想不到的问题.
将这三个压缩包解压之后,你需要分别将hibernate-distribution-3.3.2.GA文件夹下的hibernate3.jar以及lib下面required中的所有jar包,hibernate-annotations-3.4.0.GA文件夹下面的hibernate-annotations.jar和slf4j-1.5.8文件夹中的slf4j-nop-1.5.8.jar导入MyEclipse中.当然还必须得有mysql-connector-java-5.0.8-bin.jar(我使用的是MySQL,下载的是这个版本的jar包),既然要使用hibernate,那么还必须要导入hibernate-annotations-3.4.0.GA文件夹的lib目录下面的hibernate-commons-annotations.jar和ejb3-persistence.jar两个jar包.一共需要的是12jar包.而在hibernate-distribution-3.3.2.GA\documentation\manual\zh-CN\html_single的index.html就是hibernate的使用手册.
下面进行第一次使用hibernate.
首先建立数据库:
create database hibernate;use hibernate;
create table hibernate(id int primary key,name varchar(20),age int);
建立一个Java工程,建立一个Student类,具有id,name,age三个属性,并写好set和get方法.代码如下:
public class Student {
private int id;
private String name;
private int age;
private String phoneNumber;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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
按照大多数人的习惯,在建立Student类的同级目录中建立Student.hbm.xml文件.代码如下:
1 <?xml version="1.0"?>
2 <!DOCTYPE hibernate-mapping PUBLIC
3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
5
6 <hibernate-mapping package="com.nenu.hibernate">
7 <class name="Student" table="student"> <!--将实体类和数据库中的表关联,如果数据库的表明和实体类名一致,则可以省略table="表名"-->
8 <id name="id" column="id"></id><!-- 指定主键 -->
9 <property name="name" column="name"></property> <!-- 属性之间的对应,如果属性名和列名一致,也可以省略column="列名"-->
10 <property name="age"></property>
11 </class>
12 </hibernate-mapping>
接下来就是写hibernate的配置文件了.在工程的src目录下新建文件hibernate.cfg.xml,在使用手册中copy(建议不用手写,直接copy)配置文件:
1 <?xml version=‘1.0‘ encoding=‘utf-8‘?>
2 <!DOCTYPE hibernate-configuration PUBLIC
3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
4 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
5
6 <hibernate-configuration>
7
8 <session-factory>
9
10 <!-- Database connection settings -->
11 <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
12 <property name="hibernate.connection.url">
13 <![CDATA[jdbc:mysql://localhost:3306/daycode?useUnicode=true&characterEncoding=utf8]]>
14 </property>
15 <!-- 数据库地址 -->
16 <property name="connection.url">jdbc:mysql://localhost/hibernate</property>
17 <property name="connection.username">root</property>
18 <property name="connection.password">root</property>
19
20 <!-- 数据库连接池 -->
21 <!-- JDBC connection pool (use the built-in) -->
22 <!-- <property name="connection.pool_size">1</property> -->
23
24 <!-- SQL dialect SQL方言,如果使用其他数据库则需要修改方言,具体见手册-->
25 <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
26
27 <!-- Enable Hibernate‘s automatic session context management -->
28 <!-- <property name="current_session_context_class">thread</property> 暂时用不上-->
29
30 <!-- Disable the second-level cache 二级缓存不可见 二级缓存利于hibernate的优化-->
31 <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
32
33 <!-- Echo all executed SQL to stdout -->
34 <property name="show_sql">true</property>
35
36 <!-- Drop and re-create the database schema on startup hibernate自动生成建表语句-->
37 <property name="hbm2ddl.auto">update</property>
38
39 <mapping resource="com/nenu/hibernate/Student.hbm.xml"/>
40
41
42 </session-factory>
43
44 </hibernate-configuration>
至此,已经完成了大部分的工作了,现在只需要新建一个StudentTest类进行测试即可.代码如下:
1 import org.hibernate.Session;
2 import org.hibernate.SessionFactory;
3 import org.hibernate.cfg.Configuration;
4
5 public class studentTest {
6 public static void main(String[] args) {
7 Student student = new Student();
8
9 student.setId(1);
10 student.setAge(22);
11 student.setName("hibernate");
12
13 Configuration cfg = new Configuration();
14 SessionFactory sf = cfg.configure().buildSessionFactory();
15 Session session = sf.openSession();
16
17 session.beginTransaction();//进行事务管理
18 session.save(student);
19 session.getTransaction().commit();
20 }
21 }
运行studentTest.java,可以看见控制台输出了sql语句:Hibernate: insert into Teacher
(age, name, title, id) values (?, ?, ?, ?);则表明成功,查看数据库便可看到数据.
使用hibernate的方便之处在于能将一个对象方便的插入到一个不是面向对象DBMS中.
第一次使用hibernate,码迷,mamicode.com