zoukankan      html  css  js  c++  java
  • hibernate入门简单实现

    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 //save
    17 User user=new User();
    18 user.setUsername("wf");
    19 user.setPassword("123");
    20 tran.begin();//事物开始
    21 session.save(user);
    22 //update
    23 /*User user2 = (User) session.load(User.class, 1);
    24 user2.setUsername("wf2");
    25 session.update(user2);*/
    26 //delete
    27 /*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可以不用手动关闭了

    喀嚓,到此为止,睡觉
     



  • 相关阅读:
    c#序列化和反序列化list
    centos7安装oracle 11gr2
    centos7系统备份与还原
    FAT32和NTFS最大支持的单个文件大小分别是多大?
    linux挂载远程windows服务器上的ISO,给内网的服务器安装软件
    tomcat8启动慢原因及解决办法
    CentOS统的7个运行级别的含义
    对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)
    空侃简介
    linux环境部署
  • 原文地址:https://www.cnblogs.com/wufengxyz/p/2262484.html
Copyright © 2011-2022 走看看