zoukankan      html  css  js  c++  java
  • 转:用户自定义ID Generator的例子(JavaJason)

    PO

    package com.dsii.hibernate.po;

    public class Company {
        private String id;
        private String name;
        private String year;

        public Company() {
        }

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getYear() {
            return year;
        }

        public void setYear(String year) {
            this.year = year;
        }

    }
    XML

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
    <hibernate-mapping>
       <class name="com.dsii.hibernate.po.Company" table="company" >
          <id name="id" column="id"  length="10">
             <generator class="com.dsii.hibernate.po.CustomizedIdGenerator">
                    <param name="table">uid_table</param>
                    <param name="column">next_hi_value_column</param>
                    <param name="prefix">C</param>
            </generator>
          </id>
         
          <property name="name" column="name" length="30" />
          <property name="year" column="year" length="4" />
       </class>
    </hibernate-mapping>
    Customized Id Generator

    package com.dsii.hibernate.po;

    import java.io.Serializable;
    import java.sql.SQLException;
    import java.util.Properties;

    import net.sf.hibernate.HibernateException;
    import net.sf.hibernate.dialect.Dialect;
    import net.sf.hibernate.engine.SessionImplementor;
    import net.sf.hibernate.type.Type;
    import net.sf.hibernate.util.PropertiesHelper;

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import net.sf.hibernate.id.TableGenerator;

    public class CustomizedIdGenerator extends TableGenerator {

        private String prefix;

        private static final Log log = LogFactory.getLog(CustomizedIdGenerator.class);

        public void configure(Type type, Properties params, Dialect d) {
            super.configure(type, params, d);
            prefix = params.getProperty("prefix") == null ? "Pre" :
                     params.getProperty("prefix");
        }

        public synchronized Serializable generate(SessionImplementor session,
                                                  Object obj) throws SQLException,
                HibernateException {
            Integer integer = (Integer)super.generate(session, obj);
            return prefix+integer;

        }

    }
    Bean

    package com.dsii.hibernate.po;

    import net.sf.hibernate.*;
    import net.sf.hibernate.cfg.Configuration;
    import net.sf.hibernate.tool.hbm2ddl.SchemaExport;


    public class TestCompany {
        private static SessionFactory _sessions = null;

        static {
            try {
                Configuration cfg = new Configuration();
                cfg.addClass(Company.class);

                SchemaExport dbExport = new SchemaExport(cfg);
                dbExport.create(true, true);

                _sessions = cfg.buildSessionFactory();
            } catch (MappingException e) {
                e.printStackTrace();
            } catch (HibernateException e) {
                e.printStackTrace();
            }
        }

        public static void main(String[] args) throws HibernateException {
            System.out.println("----------------begin");

            Company c1 = new Company();
            c1.setName("dsii");
            c1.setYear("2004");
            Company c2 = new Company();
            c2.setName("dsii");
            c2.setYear("2004");


            Session session = _sessions.openSession();

            Transaction tx = null;
            try {
                tx = session.beginTransaction();
                session.save(c1);
                session.save(c2);
                tx.commit();
            } catch (HibernateException he) {
                if (tx != null) {
                    tx.rollback();
                }
                throw he;
            } finally {
                session.close();
            }
            System.out.println("----------------end");
        }
    }


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chinarefers/archive/2005/01/20/261184.aspx

  • 相关阅读:
    Mysql:为什么用limit时,offset很大会影响性能
    [解决方案]未能找到路径“~in oslyncsc.exe”的一部分
    [经验分享]NuGet发布自己的Dll(类库包)
    [解决方案]使用百度富文本编辑器,编辑显示不了内容
    [解决方案]未能加载文件或程序集
    [经验分享]WebApi+SwaggerUI 完美展示接口
    [经验分享]Linux网络连接-VMware+CentOS 7
    [经验分享]WebAPI中返回类型JsonMessage的应用
    [解决方案]WebAPI+SwaggerUI部署服务器后,访问一直报错的问题
    [解决方案] 当 IDENTITY_INSERT 设置为 OFF 时
  • 原文地址:https://www.cnblogs.com/xinzhuangzi/p/4100445.html
Copyright © 2011-2022 走看看