1.類庫(kù):
apache的commons除外
<classpathentry kind="lib" path="test/lib/hibernate3.jar"/>
<classpathentry kind="lib" path="test/lib/hibernate-entitymanager.jar"/>
<classpathentry kind="lib" path="test/lib/jboss-archive-browsing.jar"/>
<classpathentry kind="lib" path="test/lib/dom4j-1.6.1.jar"/>
<classpathentry kind="lib" path="test/lib/hibernate-annotations.jar"/>
<classpathentry kind="lib" path="test/lib/hibernate-commons-annotations.jar"/>
<classpathentry kind="lib" path="test/lib/javassist.jar"/>
<classpathentry kind="lib" path="test/lib/cglib-2.1.3.jar"/>
<classpathentry kind="lib" path="test/lib/asm.jar"/>
<classpathentry kind="lib" path="test/lib/asm-attrs.jar"/>
<classpathentry kind="lib" path="test/lib/antlr-2.7.6.jar"/>
2.persistence.xml
<persistence-unit name="rmp" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.dialect"
value="org.hibernate.dialect.Oracle9iDialect" />
<property name="hibernate.connection.driver_class"
value="oracle.jdbc.OracleDriver" />
<property name="hibernate.connection.url"
value="jdbc:oracle:thin:@172.16.3.3:1521:ngrm" />
<property name="hibernate.connection.username" value="xxx" />
<property name="hibernate.connection.password"
value="xxx123" />
</properties>
</persistence-unit>
3.問(wèn)題
1.重復(fù)屬性映射問(wèn)題,特別煩
@MapSuperClass
public class A {
@Transistence
public String getA11()
}
}
@Entity
@Table(name="...")
public class AA extends A {
@Transistce
@Override
public String getA11() {
}
}
要定義兩次@Transistce
2.new 構(gòu)造器問(wèn)題
select distinct new com.xxx.A(a.id, a.ss) from AA a where a.ddd=?1 and ..
為啥一定要采用通用構(gòu)造器來(lái)裝載數(shù)據(jù)?這樣最致命的問(wèn)題是如果一天要改SQL,則要改構(gòu)造函數(shù),并且如果選出來(lái)的字段比較多,構(gòu)造函數(shù)就沒(méi)法看懂了
完全可以通過(guò)缺省構(gòu)造器實(shí)例化,通過(guò)其它方式來(lái)設(shè)值.
其實(shí)這一點(diǎn)就是openJPA也沒(méi)有解決好,主要是不支持別名造成的
3.uuid-hex主鍵生成器,為啥要用
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid.hex"),該處要引入一個(gè)Hibernate的類,以后就只能在職Hibernate的JPA上跑了,受限
而OpenJPA只用 @GeneratedValue(generator = "uuid-hex")要簡(jiǎn)單一些
4.優(yōu)點(diǎn)
1. 驗(yàn)證器部分,但標(biāo)記也實(shí)在太多了,我現(xiàn)在有點(diǎn)討厭它
apache的commons除外
<classpathentry kind="lib" path="test/lib/hibernate3.jar"/>
<classpathentry kind="lib" path="test/lib/hibernate-entitymanager.jar"/>
<classpathentry kind="lib" path="test/lib/jboss-archive-browsing.jar"/>
<classpathentry kind="lib" path="test/lib/dom4j-1.6.1.jar"/>
<classpathentry kind="lib" path="test/lib/hibernate-annotations.jar"/>
<classpathentry kind="lib" path="test/lib/hibernate-commons-annotations.jar"/>
<classpathentry kind="lib" path="test/lib/javassist.jar"/>
<classpathentry kind="lib" path="test/lib/cglib-2.1.3.jar"/>
<classpathentry kind="lib" path="test/lib/asm.jar"/>
<classpathentry kind="lib" path="test/lib/asm-attrs.jar"/>
<classpathentry kind="lib" path="test/lib/antlr-2.7.6.jar"/>
2.persistence.xml
<persistence-unit name="rmp" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.dialect"
value="org.hibernate.dialect.Oracle9iDialect" />
<property name="hibernate.connection.driver_class"
value="oracle.jdbc.OracleDriver" />
<property name="hibernate.connection.url"
value="jdbc:oracle:thin:@172.16.3.3:1521:ngrm" />
<property name="hibernate.connection.username" value="xxx" />
<property name="hibernate.connection.password"
value="xxx123" />
</properties>
</persistence-unit>
3.問(wèn)題
1.重復(fù)屬性映射問(wèn)題,特別煩
@MapSuperClass
public class A {
@Transistence
public String getA11()
}
}
@Entity
@Table(name="...")
public class AA extends A {
@Transistce
@Override
public String getA11() {
}
}
要定義兩次@Transistce
2.new 構(gòu)造器問(wèn)題
select distinct new com.xxx.A(a.id, a.ss) from AA a where a.ddd=?1 and ..
為啥一定要采用通用構(gòu)造器來(lái)裝載數(shù)據(jù)?這樣最致命的問(wèn)題是如果一天要改SQL,則要改構(gòu)造函數(shù),并且如果選出來(lái)的字段比較多,構(gòu)造函數(shù)就沒(méi)法看懂了
完全可以通過(guò)缺省構(gòu)造器實(shí)例化,通過(guò)其它方式來(lái)設(shè)值.
其實(shí)這一點(diǎn)就是openJPA也沒(méi)有解決好,主要是不支持別名造成的
3.uuid-hex主鍵生成器,為啥要用
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid.hex"),該處要引入一個(gè)Hibernate的類,以后就只能在職Hibernate的JPA上跑了,受限
而OpenJPA只用 @GeneratedValue(generator = "uuid-hex")要簡(jiǎn)單一些
4.優(yōu)點(diǎn)
1. 驗(yàn)證器部分,但標(biāo)記也實(shí)在太多了,我現(xiàn)在有點(diǎn)討厭它