配Hibernate会遇到的常见问题
配Hibernate会遇到的常见问题
配置代码如下:
Oracle sql:- --创建表空间
- CREATE TABLESPACE shiningjade --指定表空间名
- DATAFILE 'D:\SHININGJADE.DBF' --指定表空间文件位置和文件名
- SIZE 50M --初始大小
- AUTOEXTEND ON --自增开关
- NEXT 50M --自增大小
- MAXSIZE UNLIMITED; --限制大小
- COMMIT;
- --创建用户指定默认表空间
- CREATE USER sj IDENTIFIED BY 123456 --创建用户名并指定密码
- DEFAULT TABLESPACE shiningjade --用户的默认表空间
- TEMPORARY TABLESPACE TEMP; --临时表空间
- COMMIT;
- --用户授权
- GRANT DBA,CONNECT,CREATE SESSION, CREATE SEQUENCE,CREATE PROCEDURE,EXECUTE ANY PROCEDURE,CREATE TABLE TO sj;
- COMMIT;
- --首先创建一个表
- CREATE TABLE document_type
- (
- id INTEGER CONSTRAINT document_type_pk PRIMARY KEY NOT NULL,
- name VARCHAR2(30) NOT NULL
- );
- COMMIT;
- --然后创建一个序列
- CREATE SEQUENCE sq_document_type;
- COMMIT;
- --为表创建触发器,每次插入前序列自增1
- CREATE TRIGGER tg_document_type
- BEFORE INSERT ON document_type
- FOR EACH ROW
- BEGIN
- SELECT sq_document_type.nextval INTO :NEW.id from dual;
- END tg_document_type;
- COMMIT;
- --插入数据测试
- INSERT INTO document_type(name) values('身份证');
- INSERT INTO document_type(name) values('假证');
- INSERT INTO document_type(name) values('老年证');
- INSERT INTO document_type(name) values('游园证');
- INSERT INTO document_type(name) values('党员证');
- INSERT INTO document_type(name) values('结扎证');
- COMMIT;
select * from document_type ORDER BY id;
ID NAME
---------- ------------------------------
1 身份证
2 假证
3 老年证
4 游园证
5 党员证
6 结扎证
注:如果在创建触发器时报错提示--NEW 或 OLD 引用不允许在表级触发器中,表示你忘记写FOR EACH ROW 关键字了
Java代码 实体类
- package hibernate;
- import java.math.BigDecimal;
- public class DocumentType implements java.io.Serializable {
- private static final long serialVersionUID = -3323030831848684918L;
- private BigDecimal id;
- private String name;
- public DocumentType() {
- }
- public DocumentType(BigDecimal id, String name) {
- this.id = id;
- this.name = name;
- }
- public BigDecimal getId() {
- return this.id;
- }
- public void setId(BigDecimal id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <!--
- Mapping file autogenerated by MyEclipse Persistence Tools
- -->
- <hibernate-mapping package="hibernate">
- <class name="DocumentType" table="DOCUMENT_TYPE" schema="SJ">
- <id name="id" type="java.math.BigDecimal">
- <column name="ID" precision="38" scale="0" />
- <generator class="assigned" />
- </id>
- <property name="name" type="java.lang.String">
- <column name="NAME" length="30" not-null="true" />
- </property>
- </class>
- </hibernate-mapping>
HibernateSessionFactory
- package hibernate;
- import org.hibernate.HibernateException;
- import org.hibernate.Session;
- import org.hibernate.cfg.Configuration;
- import org.hibernate.cfg.AnnotationConfiguration;
- public class HibernateSessionFactory {
- private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
- private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
- private static Configuration configuration = new AnnotationConfiguration();
- private static org.hibernate.SessionFactory sessionFactory;
- private static String configFile = CONFIG_FILE_LOCATION;
- static {
- try {
- configuration.configure(configFile);
- sessionFactory = configuration.buildSessionFactory();
- } catch (Exception e) {
- System.err
- .println("%%%% Error Creating SessionFactory %%%%");
- e.printStackTrace();
- }
- }
- private HibernateSessionFactory() {
- }
- public static Session getSession() throws HibernateException {
- Session session = (Session) threadLocal.get();
- if (session == null || !session.isOpen()) {
- if (sessionFactory == null) {
- rebuildSessionFactory();
- }
- session = (sessionFactory != null) ? sessionFactory.openSession()
- : null;
- threadLocal.set(session);
- }
- return session;
- }
- public static void rebuildSessionFactory() {
- try {
- configuration.configure(configFile);
- sessionFactory = configuration.buildSessionFactory();
- } catch (Exception e) {
- System.err
- .println("%%%% Error Creating SessionFactory %%%%");
- e.printStackTrace();
- }
- }
- public static void closeSession() throws HibernateException {
- Session session = (Session) threadLocal.get();
- threadLocal.set(null);
- if (session != null) {
- session.close();
- }
- }
- public static org.hibernate.SessionFactory getSessionFactory() {
- return sessionFactory;
- }
- public static void setConfigFile(String configFile) {
- HibernateSessionFactory.configFile = configFile;
- sessionFactory = null;
- }
- public static Configuration getConfiguration() {
- return configuration;
- }
- }
|
评论暂时关闭