hibernate属于ORM(object/relation mapping)对象关系映射数据库框架,具体解释搜索一下就知道了,orm框架还有OpenJPA,Mybatis等,但hibernate应该还是最主流的吧,毕竟做的也比较早,也是传说中SSH的一大成员之一,这么多年谈烂了还在谈的。废话就不说了,要做一个hibernate程序:
1、导jar包
发现不能传图片呀,我就打上吧
antlr.jar;c3p0.jar;commons-collections.jar;dom4j.jar;hibernate-jpa.jar;hibernate3.jar;javassist.jar;jta.jar;mysql-connector.jar;slf4j-api.jar
到这里http://www.hibernate.org/下载hibernate的jar包,以上很多jar都在里面
2、创建持久化类(pojo/bean)
对于bean对象,注意要有对应的get/set方法
要有无参数的默认的构造方法
不能用final修饰
这里代码如下
package com.wf.entity; public class User { private long id; private String username; private String password; private String createtime; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getCreatetime() { return createtime; } public void setCreatetime(String createtime) { this.createtime = createtime; } }3、创建映射文件(XXX.hbm.xml)
映射文件的作用就是将bean与数据库中的字段对应起来的,这里简单实现一个,还有就是这个配置文件必须与bean放到一个包中
名字为bean.hbm.xml;这里实现如下
View Code 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 5 <hibernate-mapping package="com.wf.entity"> 6 <class name="User" table="t_user"> 7 <id name="id" column="id"> 8 <generator class="native"></generator> 9 </id>10 <property name="username"></property>11 <property name="password"></property>12 <property name="createtime"></property>13 </class>14 </hibernate-mapping>4、创建hibernate配置文件(hibernate.cfg.xml)
这一步的目的是连接数据库的,相当以前的JDBC连接数据库吧,这里在配置文件中实现了,这个文件要放到src下
View Code 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 5 <hibernate-configuration> 6 <session-factory> 7 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 8 <property name="connection.url">jdbc:mysql:///testdb</property> 9 <property name="connection.username">root</property> 10 <property name="connection.password">root</property> 11 <!-- hibernate方言(确定数据库)此处为mysql -->12 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 13 <!-- 数据库连接池,我用的是c3p0连接池 -->14 <property name="hibernate.c3p0.max_size">2</property>15 <property name="hibernate.c3p0.min_size">2</property>16 <property name="hibernate.c3p0.timeout">5000</property>17 <property name="hibernate.c3p0.max_statements">100</property>18 <property name="hibernate.c3p0.idle_test_period">3000</property>19 <property name="hibernate.c3p0.acquire_increment">2</property>20 <property name="hibernate.c3p0.validate">false</property> 21 <!-- 配置是否在控制台中显示sql语句 --> 22 <property name="hibernate.show_sql">true</property>23 <!-- 绑定session -->24 <property name="current_session_context_class">thread</property>25 <!-- 配置映射文件,指定到自己所配置的映射文件 -->26 <mapping resource="com/wf/entity/user.hbm.xml"/>27 </session-factory>28 </hibernate-configuration>5、测试运行
呵呵,最后一步了,可以CRUD操作了
View Code 1 package com.wf.test; 2 3 import org.hibernate.SessionFactory; 4 import org.hibernate.Transaction; 5 import org.hibernate.cfg.Configuration; 6 import org.hibernate.classic.Session; 7 8 import com.wf.entity.User; 9 10 public class test {11 12 public static void main(String[] args) {13 SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory();;14 Session session=sessionFactory.getCurrentSession();15 Transaction tran = session.beginTransaction();16 //save17 User user=new User();18 user.setUsername("wf");19 user.setPassword("123");20 tran.begin();//事物开始21 session.save(user);22 //update23 /*User user2 = (User) session.load(User.class, 1); 24 user2.setUsername("wf2");25 session.update(user2);*/26 //delete27 /*User user3=(User) session.load(User.class, 1);28 session.delete(user3);*/29 tran.commit();//事物提交30 //query查询不用放入事物31 /*List<User> userList = session.createQuery("from User").list(); 32 for(User user4 : userList){ 33 System.out.println(user4.getUsername()); 34 }*/35 }36 37 }现在很多参考书上好像都有session的打开与关闭,我也看到过,现在hibernate3.6之后获取的session可以不用手动关闭了
喀嚓,到此为止,睡觉
转载于:https://www.cnblogs.com/wufengxyz/archive/2011/11/25/2262484.html
相关资源:数据结构—成绩单生成器