• hibernate4.2.4之环境搭建与测试实例


     1.下载hibernate-release-4.2.4.Final.zip 从点击打开链接( http://www.hibernate.org/downloads)下载

          

    2.在eclipse中新建一个java project工程,名为hibernate_first,在hibernate_first中新建一个ilb文件夹,

         解压下载的hibernate-release-4.2.4.Final.zip,打开之后有几个文件夹 lib---jar库   documentation--文档说明  projetc---关于hibernate的配置/例子等等之类的

        进入到hibernate-release-4.2.4.Finallib equired 目录下 将8个必须的jar包拷贝到 hibernate_firstlib 下面 并且将8个jar包单击右键选中--Build Path--Add to Build Path(即添加为工程引用)

       同时将mysql-connector-java-5.1.25-bin.jar 添加lib包下

       


    3.编写配置文件 进入到hibernate-release-4.2.4.Finalprojectetc 目录下 将hibernate.cfg.xml文件拷贝到项目hibernate_firstsrc 目录下

       将hibernate.cfg.xml文件修改为如下;

    <!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>
    		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
    		<property name="hibernate.connection.username">root</property>
    		<property name="hibernate.connection.password">root</property>
    		
    		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    		<property name="hbm2ddl.auto">create</property>
    		<property name="hibernate.show_sql">true</property>
    		
    		<mapping resource="com/undergrowth/hibernate/domain/Student.hbm.xml" />
    		
    	</session-factory>
    </hibernate-configuration>

    简单解释一下上面的hibernate.cfg.xml文件  


     connection.driver_class/connection.url/connection.username/connection.password  是用于mysql连接的驱动/资源定位符/登陆账号/登陆密码

    hibernate.dialect是hibernate用于兼容多种数据库而做的,告诉hibernate使用的是哪一种数据库

    hibernate.show_sql是在进行相应的hibernate操作时,会在控制台输出相应的sql语句

    hbm2ddl.auto是在hibernate第一次进行操作时 都会自己创建一个表

    mapping resource用于指明对象与表的映射关系 这里指的是Student类和学生表的一个映射文件  下面也会介绍到

    上面的这些属性其实不用记 在hibernate-release-4.2.4.Finalprojectetchibernate.properties文件中都可以找到

    4.编写对象与对象的映射文件 引用上面的配置  建立Student.java类 如下

       

    package com.undergrowth;
    
    import java.util.Date;
    
    public class Student {
    	private int id;  
    	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 Date getBirthday() {
    		return birthday;
    	}
    	public void setBirthday(Date birthday) {
    		this.birthday = birthday;
    	}
    	public String getMajor() {
    		return major;
    	}
    	public void setMajor(String major) {
    		this.major = major;
    	}
    	private String name;
    	private Date birthday;
    	private String major;
    	public Student(String name, Date birthday, String major) {
    		this.name = name;
    		this.birthday = birthday;
    		this.major = major;
    	}
    	
    	public Student(){}  //用于给hibernate的反射使用
    	@Override
    	public String toString() {
    		return "Student [id=" + id + ", name=" + name + ", birthday="
    				+ birthday + ", major=" + major + "]";
    	}
    	
    	
    }
    


    编写Student的ORM映射文件Student.hbm.xml  hibernate自带的模板很多 这里引用hibernate-release-4.2.4.Finalprojectdocumentationsrcmaindocbookquickstart	utorialsasicsrc	estjavaorghibernate	utorialhbm 目录下的Event.hbm.xml
     
    Student.hbm.xml
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
    <hibernate-mapping package="com.undergrowth">
    
        <class name="Student" table="student">
            <id name="id">
                <generator class="native"/>
            </id>
            <property name="name"/>
            <property name="birthday"/>
            <property name="major"/>
        </class>
    
    </hibernate-mapping>
    


     

    5.测试
    StudentDaoInter.java
    package com.undergrowth.inter;
    
    import com.undergrowth.Student;
    
    public interface StudentDaoInter {
          public void saveStudent(Student student);
          public void updateStudent(Student student);
          public void deleteStudent(Student student);
          public Student findIdStudent(int id);
          public Student findNameStudent(String name);
    }
    


     

    StudentDaoImp.java
    package com.undergrowth.imple;
    
    import com.undergrowth.Student;
    import com.undergrowth.hibernate.utils.HibernateUtils;
    import com.undergrowth.inter.StudentDaoInter;
    
    public class StudentDaoImp implements StudentDaoInter {
    
    	@Override
    	public void saveStudent(Student student) {
    		// TODO Auto-generated method stub
    		HibernateUtils.add(student);
    	}
    
    	@Override
    	public void updateStudent(Student student) {
    		// TODO Auto-generated method stub
    		HibernateUtils.update(student);
    	}
    
    	@Override
    	public void deleteStudent(Student student) {
    		// TODO Auto-generated method stub
    		HibernateUtils.delete(student);
    	}
    
    	@Override
    	public Student findIdStudent(int id) {
    		// TODO Auto-generated method stub
    		return (Student) HibernateUtils.get(Student.class, id);
    	}
    
    	@Override
    	public Student findNameStudent(String name) {
    		// TODO Auto-generated method stub
    		return (Student) HibernateUtils.get(name);
    	}
    
    }
    


     

    HibernateUtils.java
    package com.undergrowth.hibernate.utils;
    
    import java.io.Serializable;
    
    
    
    import org.hibernate.HibernateException;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    
    public class HibernateUtils {
    	private static SessionFactory sf;
    	
    	static{
    		Configuration cfg=new Configuration();
    		cfg.configure();
    		sf=	cfg.buildSessionFactory();
    	}
    	
    	public static Session getSession()
    	{
    		return sf.openSession();
    	}
    	
    	public static void add(Object entity)
    	{
    		Session session=null;
    		Transaction tx=null;
    		try {
    			session=HibernateUtils.getSession();
    			tx=session.beginTransaction();
    			session.save(entity);
    			tx.commit();
    		} catch (HibernateException e) {
    			throw e;
    		}finally{
    			if(session!=null)
    				session.close();
    		}
    	}
    	
    	public static void delete(Object entity)
    	{
    		Session session=null;
    		Transaction tx=null;
    		try {
    			session=HibernateUtils.getSession();
    			tx=session.beginTransaction();
    			session.delete(entity);
    			tx.commit();
    		} catch (HibernateException e) {
    			throw e;
    		}finally{
    			if(session!=null)
    				session.close();
    		}
    	}
    	
    	public static void update(Object entity)
    	{
    		Session session=null;
    		Transaction tx=null;
    		try {
    			session=HibernateUtils.getSession();
    			tx=session.beginTransaction();
    			session.update(entity);
    			tx.commit();
    		} catch (HibernateException e) {
    			throw e;
    		}finally{
    			if(session!=null)
    				session.close();
    		}
    	}
    	
    	
    	public static Object get(Class clazz,Serializable id)
    	{
    		Session session=null;
    		try {
    			session=HibernateUtils.getSession();
    			Object obj=session.get(clazz, id);
    			return obj;
    		} catch (HibernateException e) {
    			throw e;
    		}finally{
    			if(session!=null)
    				session.close();
    		}
    	}
    	
    	public static Object get(String name)
    	{
    		Session session=null;
    		try {
    			session=HibernateUtils.getSession();
    			Query query=session.createQuery("from Student as student where name=:name");
    			query.setParameter("name", name);
    			Object obj=query.uniqueResult();
    			return obj;
    		} catch (HibernateException e) {
    			throw e;
    		}finally{
    			if(session!=null)
    				session.close();
    		}
    	}
    }
    


     

    HibernateTest.java
    package com;
    
    import java.util.Date;
    
    import com.undergrowth.Student;
    import com.undergrowth.imple.StudentDaoImp;
    
    public class HibernateTest {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		StudentDaoImp imp=new StudentDaoImp();
    		//添加
    		Student student=new Student("under", new Date(), "计算机");
    		System.out.println(student);
    		imp.saveStudent(student);
    		//查询
    		student=imp.findNameStudent("under");
    		System.out.println(student);
    		//修改
    		student.setMajor("电信");
    		imp.updateStudent(student);
    		//查询
    		student=imp.findNameStudent("under");
    		System.out.println(student);
    		//删除
    		imp.deleteStudent(student);
    		
    	}
    
    }
    


     

    打印的控制台信息


  • 相关阅读:
    CentOS 7 如何设置默认启动方式为命令行模式
    Virtual Box配置CentOS7网络
    序列化后成对象转map,再添加到dataList
    centos7 ping: www.baidu.com: Name or service not known
    协议1
    idea查看接口方法实现
    centos关闭防火墙
    myeclipse配置svn
    eas固定ip避免多次申请许可
    jvm配置
  • 原文地址:https://www.cnblogs.com/liangxinzhi/p/4275611.html
Copyright © 2020-2023  润新知