配Hibernate会遇到的常见问题


配置代码如下:

Oracle sql:
  1. --创建表空间   
  2. CREATE TABLESPACE shiningjade --指定表空间名   
  3. DATAFILE 'D:\SHININGJADE.DBF' --指定表空间文件位置和文件名   
  4. SIZE 50M --初始大小   
  5. AUTOEXTEND ON --自增开关   
  6. NEXT 50M --自增大小   
  7. MAXSIZE UNLIMITED; --限制大小   
  8. COMMIT;  
  9.   
  10. --创建用户指定默认表空间   
  11. CREATE USER sj IDENTIFIED BY 123456  --创建用户名并指定密码   
  12. DEFAULT TABLESPACE shiningjade --用户的默认表空间   
  13. TEMPORARY TABLESPACE TEMP--临时表空间   
  14. COMMIT;  
  15.   
  16. --用户授权   
  17. GRANT DBA,CONNECT,CREATE SESSION, CREATE SEQUENCE,CREATE PROCEDURE,EXECUTE ANY PROCEDURE,CREATE TABLE TO sj;  
  18. COMMIT;  
  19.   
  20.   
  21. --首先创建一个表   
  22.   
  23. CREATE TABLE document_type  
  24. (      
  25.    id INTEGER CONSTRAINT document_type_pk PRIMARY KEY NOT NULL,      
  26.    name VARCHAR2(30) NOT NULL  
  27. );  
  28. COMMIT;  
  29.   
  30. --然后创建一个序列   
  31. CREATE SEQUENCE sq_document_type;  
  32. COMMIT;   
  33.   
  34. --为表创建触发器,每次插入前序列自增1   
  35. CREATE TRIGGER tg_document_type  
  36. BEFORE INSERT ON document_type  
  37. FOR EACH ROW  
  38. BEGIN      
  39.   SELECT sq_document_type.nextval INTO :NEW.id from dual;  
  40. END  tg_document_type;  
  41. COMMIT;   
  42.   
  43. --插入数据测试   
  44.   
  45. INSERT INTO document_type(namevalues('身份证');  
  46. INSERT INTO document_type(namevalues('假证');  
  47. INSERT INTO document_type(namevalues('老年证');  
  48. INSERT INTO document_type(namevalues('游园证');  
  49. INSERT INTO document_type(namevalues('党员证');  
  50. INSERT INTO document_type(namevalues('结扎证');  
  51. COMMIT;  
查询结果
select * from document_type ORDER BY id;
        ID NAME                         
---------- ------------------------------
         1 身份证                          
         2 假证                           
         3 老年证                          
         4 游园证                          
         5 党员证                          
         6 结扎证


注:如果在创建触发器时报错提示--NEW 或 OLD 引用不允许在表级触发器中,表示你忘记写FOR EACH ROW 关键字了

Java代码 实体类
  1. package hibernate;  
  2.   
  3. import java.math.BigDecimal;  
  4.   
  5. public class DocumentType implements java.io.Serializable {  
  6.   
  7.     private static final long serialVersionUID = -3323030831848684918L;  
  8.     private BigDecimal id;  
  9.     private String name;  
  10.     public DocumentType() {  
  11.     }  
  12.     public DocumentType(BigDecimal id, String name) {  
  13.         this.id = id;  
  14.         this.name = name;  
  15.     }  
  16.     public BigDecimal getId() {  
  17.         return this.id;  
  18.     }  
  19.   
  20.     public void setId(BigDecimal id) {  
  21.         this.id = id;  
  22.     }  
  23.   
  24.     public String getName() {  
  25.         return this.name;  
  26.     }  
  27.   
  28.     public void setName(String name) {  
  29.         this.name = name;  
  30.     }  
  31.   
  32. }  
实体类的xml
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4. <!--  
  5.     Mapping file autogenerated by MyEclipse Persistence Tools 
  6. -->  
  7. <hibernate-mapping package="hibernate">  
  8.     <class name="DocumentType" table="DOCUMENT_TYPE" schema="SJ">  
  9.         <id name="id" type="java.math.BigDecimal">  
  10.             <column name="ID" precision="38" scale="0" />  
  11.             <generator class="assigned" />  
  12.         </id>  
  13.         <property name="name" type="java.lang.String">  
  14.             <column name="NAME" length="30" not-null="true" />  
  15.         </property>  
  16.     </class>  
  17. </hibernate-mapping>  

HibernateSessionFactory

  1. package hibernate;  
  2.   
  3. import org.hibernate.HibernateException;  
  4. import org.hibernate.Session;  
  5. import org.hibernate.cfg.Configuration;  
  6. import org.hibernate.cfg.AnnotationConfiguration;  
  7.   
  8. public class HibernateSessionFactory {  
  9.   
  10.     private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";  
  11.     private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();  
  12.     private  static Configuration configuration = new AnnotationConfiguration();      
  13.     private static org.hibernate.SessionFactory sessionFactory;  
  14.     private static String configFile = CONFIG_FILE_LOCATION;  
  15.   
  16.     static {  
  17.         try {  
  18.             configuration.configure(configFile);  
  19.             sessionFactory = configuration.buildSessionFactory();  
  20.         } catch (Exception e) {  
  21.             System.err  
  22.                     .println("%%%% Error Creating SessionFactory %%%%");  
  23.             e.printStackTrace();  
  24.         }  
  25.     }  
  26.     private HibernateSessionFactory() {  
  27.     }  
  28.       
  29.     public static Session getSession() throws HibernateException {  
  30.         Session session = (Session) threadLocal.get();  
  31.   
  32.         if (session == null || !session.isOpen()) {  
  33.             if (sessionFactory == null) {  
  34.                 rebuildSessionFactory();  
  35.             }  
  36.             session = (sessionFactory != null) ? sessionFactory.openSession()  
  37.                     : null;  
  38.             threadLocal.set(session);  
  39.         }  
  40.   
  41.         return session;  
  42.     }  
  43.       
  44.     public static void rebuildSessionFactory() {  
  45.         try {  
  46.             configuration.configure(configFile);  
  47.             sessionFactory = configuration.buildSessionFactory();  
  48.         } catch (Exception e) {  
  49.             System.err  
  50.                     .println("%%%% Error Creating SessionFactory %%%%");  
  51.             e.printStackTrace();  
  52.         }  
  53.     }  
  54.   
  55.     public static void closeSession() throws HibernateException {  
  56.         Session session = (Session) threadLocal.get();  
  57.         threadLocal.set(null);  
  58.   
  59.         if (session != null) {  
  60.             session.close();  
  61.         }  
  62.     }  
  63.   
  64.     public static org.hibernate.SessionFactory getSessionFactory() {  
  65.         return sessionFactory;  
  66.     }  
  67.   
  68.     public static void setConfigFile(String configFile) {  
  69.         HibernateSessionFactory.configFile = configFile;  
  70.         sessionFactory = null;  
  71.     }  
  72.   
  73.     public static Configuration getConfiguration() {  
  74.         return configuration;  
  75.     }  
  76.   
  77. }  
  • 1
  • 2
  • 3
  • 下一页

相关内容