• 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, 生成新纪录  

  • 相关阅读:
    每日日报
    每日日报
    每日日报
    线上问题定位---jstack
    8.18Java入门--->第二十二节(ObjectOutputStream、ObjectInputStream)
    8.17Java入门--->第二十一节(IO流)
    Mybatis--->第六节一对多和多对一
    8.14Java入门--->第二十节
    8.13Java入门--->第十九节(Map嵌套)
    Java学习
  • 原文地址:https://www.cnblogs.com/wujixing/p/5413238.html
Copyright © 2020-2023  润新知