zoukankan      html  css  js  c++  java
  • hibernate--ID生成策略--XML

    xml生成id, 

    a) generator

    b) 常用4个: native, uuid, identity, sequence

    1. 新建java项目,  引入hibernate, junit(user library)和sql包

    2. 新建包 com.bjsxt.hibernate, class: Student.java:

    package com.bjsxt.hibernate;
    
    public class Student {
    	private int id;
    	private String name;
    	private int age;
    
    	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;
    	}
    
    }
    

    3. 新建Student.hbm.xml:  使用generator class  , 换成uuid的话, 需要把 Student.java里的id改成String类型

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.bjsxt.hibernate">
        <class name="Student" table="_student">
            <id name="id">
            	<generator class="native"></generator>
            </id>
            <property name="name"/>
            <property name="age"/>
        </class>
    </hibernate-mapping>
    

    4. 配置hibernate.cfg.xml放在src下.    update重要, 否则不用新生成id

    5. 创建log4j.properties在src下:

    6. 项目右键新建source folder---"test"

    7. 项目下新建package  com.bjsxt.hibernate, 和上面同名;

    8. junit test文件里加入Studnet的测试代码

    package com.bjsxt.hibernate;
    
    
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.AnnotationConfiguration;
    import org.junit.AfterClass;
    import org.junit.BeforeClass;
    import org.junit.Test;
    
    public class HibernateIDTest {
    	private static SessionFactory sf=null;
    	@BeforeClass
    	public static void beforeClass(){
    		try {
    			sf=new AnnotationConfiguration().configure().buildSessionFactory();
    		} catch (HibernateException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	@AfterClass
    	public static void afterClass(){
    		sf.close();
    	}
    	
    	@Test
    	public void testStudentSave() {
    		Student s =new Student();
    		s.setName("wddddf");
    		s.setAge(23);
    		
    		Session session =  sf.openSession();
    		session.beginTransaction();
    		session.save(s);
    		session.getTransaction().commit();
    		session.close();	
    	}
    	
    	@Test
    	public void testTeacherSave() {
    		Teacher t =new Teacher();
    		t.setName("wdf");
    		t.setTitle("higfdfsdfsadh");
    		
    		
    		Session session =  sf.openSession();
    		session.beginTransaction();
    		session.save(t);
    		session.getTransaction().commit();
    		session.close();	
    	}
    	
    	
    }
    

    9. run as->junit test, 就会自动递增id, 生成新纪录  

  • 相关阅读:
    ConcurrentHashMap总结
    HashMap在多线程环境下操作可能会导致程序死循环
    oracle数据库的 to char 和to date 区别(时间格式化)
    SQL中的cast()函数用法
    常见的垃圾收集器有3类-java面试一
    mybatis中sql引用
    mysql find_in_set 查询
    用Redis实现微博关注关系的分析
    C#与C++相比较之STL篇(续一)
    Vite2.0 入门
  • 原文地址:https://www.cnblogs.com/wujixing/p/5413238.html
Copyright © 2011-2022 走看看