zoukankan      html  css  js  c++  java
  • Hibernate入门(1)-第一个Hibernate程序

    Hibernate入门(1)-第一个Hibernate程序

    Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理。本文介绍第一个Hibernate例子,注意,这是一个独立的Hibernate,跟Spring和Struts没有任何关系。

    目录结构

    main
    |--java
    |----com
    |------chzhao
    |--------hibernatetest
    |----------Dept.hbm.xml
    |----------Dept.java
    |----------DeptDao.java
    |----------HibernateBase.java
    |--resources
    |----hibernate.cfg.xml
    test
    |----com
    |------chzhao
    |--------hibernatetest
    |----------AppTest.java
    |----------DeptDaoTest.java
    

    maven pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    
    	<groupId>com.wisdombud</groupId>
    	<artifactId>HibernateTest</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<packaging>jar</packaging>
    
    	<name>HibernateTest</name>
    	<url>http://maven.apache.org</url>
    
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<hibernate.version>4.2.0.Final</hibernate.version>
    		<hibernate.search>4.2.0.Final</hibernate.search>
    		<mysql-connector-java.version>5.1.29</mysql-connector-java.version>
    	</properties>
    
    	<dependencies>
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>3.8.1</version>
    			<scope>test</scope>
    		</dependency>
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>${mysql-connector-java.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.hibernate</groupId>
    			<artifactId>hibernate-core</artifactId>
    			<version>${hibernate.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.hibernate</groupId>
    			<artifactId>hibernate-c3p0</artifactId>
    			<version>${hibernate.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.hibernate</groupId>
    			<artifactId>hibernate-ehcache</artifactId>
    			<version>${hibernate.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.hibernate</groupId>
    			<artifactId>hibernate-search</artifactId>
    			<version>${hibernate.search}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.hibernate</groupId>
    			<artifactId>hibernate-entitymanager</artifactId>
    			<version>${hibernate.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.hibernate</groupId>
    			<artifactId>hibernate-validator</artifactId>
    			<version>${hibernate.version}</version>
    		</dependency>
    	</dependencies>
    </project>
    

    实体类

    package com.chzhao.hibernatetest;
    
    public class Dept {
    	private String id;
    	private String DeptNo;
    	private String DName;
    
    	public String getId() {
    		return id;
    	}
    
    	public void setId(String id) {
    		this.id = id;
    	}
    
    	public String getDeptNo() {
    		return DeptNo;
    	}
    
    	public void setDeptNo(String deptNo) {
    		DeptNo = deptNo;
    	}
    
    	public String getDName() {
    		return DName;
    	}
    
    	public void setDName(String dName) {
    		DName = dName;
    	}
    }
    
    

    映射文件

    <!DOCTYPE hibernate-mapping PUBLIC  
    	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    
    <hibernate-mapping package="com.chzhao.hibernatetest">
    	<class name="Dept" table="dept">
    		<id name="id" column="id" type="string"></id>
    		<property name="DeptNo" />
    		<property name="DName" />
    	</class>
    </hibernate-mapping>  
    

    Hibernate操作基础类

    package com.chzhao.hibernatetest;
    
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    
    public abstract class HibernateBase {
    	protected SessionFactory sessionFactory;// 会话工厂,用于创建会话
    	protected Session session;// hibernate会话
    	protected Transaction transaction; // hiberante事务
    
    	public HibernateBase() throws HibernateException {
    		this.initHibernate();
    	}
    
    	protected void initHibernate() throws HibernateException {
    		sessionFactory = new Configuration().configure().buildSessionFactory();
    	}
    
    	protected void beginTransaction() throws HibernateException {
    		session = sessionFactory.openSession();
    		transaction = session.beginTransaction();
    	}
    
    	protected void endTransaction(boolean commit) throws HibernateException {
    
    		if (commit) {
    			transaction.commit();
    		} else {
    			transaction.rollback();
    		}
    		session.close();
    	}
    }
    

    实体操作类

    package com.chzhao.hibernatetest;
    
    import java.util.Iterator;
    
    import org.hibernate.HibernateException;
    import org.hibernate.Query;
    
    public class DeptDao extends HibernateBase {
    	public DeptDao() throws HibernateException {
    		super();
    	}
    
    	public void addDept(Dept Dept) throws HibernateException {
    		beginTransaction();
    		session.save(Dept);
    		endTransaction(true);
    	}
    
    	public Iterator getAllDepts() throws HibernateException {
    		String queryString = "select Depts from Dept as Dept";
    		beginTransaction();
    		Query query = session.createQuery(queryString);
    		Iterator it = query.iterate();
    		return it;
    	}
    
    	public void deleteDept(String id) throws HibernateException {
    		beginTransaction();
    		Dept Dept = (Dept) session.load(Dept.class, id);
    		session.delete(Dept);
    		endTransaction(true);
    	}
    
    	public Iterator getSomeDept(String name) throws HibernateException {
    		String queryString = "select u from Dept as u where u.name like :name";
    		beginTransaction();
    		Query query = session.createQuery(queryString);
    		query.setString("name", "%" + name + "%");
    		Iterator it = query.iterate();
    		return it;
    	}
    }
    
    

    hibernate配置文件

    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
    	<session-factory>
    		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    		<property name="connection.url">
    			jdbc:mysql://localhost:3306/tz?useUnicode=true&amp;characterEncoding=utf8
    		</property>
    		<property name="connection.username">tz</property>
    		<property name="connection.password">tz</property>
    		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    		<property name="show_sql">true</property>
    		<mapping resource="com/chzhao/hibernatetest/Dept.hbm.xml" />
    	</session-factory>
    </hibernate-configuration>
    

    测试类

    package com.chzhao.hibernatetest;
    
    import java.util.UUID;
    
    import junit.framework.TestCase;
    
    public class DeptDaoTest extends TestCase {
    	public void testAddDept() {
    		DeptDao dao = new DeptDao();
    		Dept dept = new Dept();
    		dept.setDeptNo("3");
    		dept.setDName("c");
    		dept.setId(UUID.randomUUID().toString());
    		dao.addDept(dept);
    	}
    }
    
    
  • 相关阅读:
    4-9 路由 URL 和参数(1)
    pycharm开发时bug提示设置
    【Camera】Camera中光圈系数概念以及光圈的作用
    Android功耗(9)---MTK功耗问题分析1
    【知识普及】摄像机常用专业术语(上)
    Android 功耗(8)---如何找到阻止进入deep idle SODI的元凶
    Android功耗优化(7)---如何分析wakelock(wakeup source)持锁问题
    Linux内核虚拟内存管理之匿名映射缺页异常分析
    Android 功耗(6)---整机功耗测试
    Android 功耗(5)----功耗调试
  • 原文地址:https://www.cnblogs.com/wardensky/p/4223243.html
Copyright © 2011-2022 走看看