orm我们选择的是 nhibernate. 用法和hibernate差别不大,只是在有些配置的地方和java有点区别.* i2 A/ k- D ~+ G* K2 G8 J
首先一个问题就是要安装oracle客户端. 可能用sqlserver的同学有点奇怪了,sqlserver可没说要安一个客户端才能用.其实那是ms默认就把它安装到windows里面了. 用jdbc也可以不用安装oracle客户端,采用thin模式就可以联上了.
由于我是安装的oracle11G,然后顺理成章的就去找oracle11G的客户端.跑到oracle的网站上,然后说还需要注册一个账号.然后搞了半天没弄起.麻烦死了. 正好电脑上有oracle9i的安装文件,里面有客户端.然后想想,升级了版本应该对客户端没有什么影响,然后把oracle9i客户端安上.居然连接上了,哈哈
T
然后在nhibernate里面配置oracle的连接. 这个事nhibernate 的配置文件内容:
<?xml version="1.0" encoding="utf-8"?>) D# E. d2 M0 /1 f/ ]5 T: _
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
<session-factory>
<property name="connection.driver_class">AMCP.DAO.ExSqlClientDriver,AMCP.DAO</property>
<property name="connection.connection_string">
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxxx)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));User Id=xxxxassword=xxxxx;
</property>
<property name="adonet.batch_size">10</property>& k( ?2 {- R0 b0 q
<property name="show_sql">true</property>! H# [5 i# / X' |1 b2 ~4 e
<property name="dialect">NHibernate.Dialect.OracleDialect</property>+ ~: Y% P5 r1 ~6 ]8 z
<property name="use_outer_join">true</property>
<property name="command_timeout">60</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>- W. O' K( e8 n) S2 r+ W& s
<!--配置二级缓存提供程序-->2 M4 A; r' i, D. `
<property name="cache.provider_class">NHibernate.Caches.SysCache2.SysCacheProvider,NHibernate.Caches.SysCache2</property>; [# D6 n$ o% Y9 O4 }
<!--开启查询缓存-->
<property name="cache.use_query_cache">true</property>7 N; z, G4 }; T- R' A
<!--配置映射文件程序集-->4 F5 A; I$ R! y* ~, w$ P! L
<mapping assembly="AMCP.Model"/>
<!--配置映射的二级缓存-->3 T8 e7 t: z r) o3 K5 J. u7 g
<class-cache class="AMCP.Model.Ap,AMCP.Model" usage="read-write"/>
</session-factory>$ P: N# X6 p: R9 A0 E2 @
</hibernate-configuration># k5 n x, B. L
然后生成的model的hbm.xml文件需要注意一下:) J; U4 q4 q5 j; Z3 g
由于在sqlserver里面是把字段名加上[]是可以的,但是在oracle里面不能这样高.
所以生成的hbm.xml需要修改一哈:6 J$ x5 B4 Z. g! I
这儿以一个字典表为例子:% [; E A9 /1 J/ S
比如说 name="Sort" ,默认好像是给搞成了 name="[Sort]",需要改成name="Sort",否则在生成的sql里面就是 表别名.[字段名] 在oracle里面就要报错!!
<?xml version="1.0" encoding="utf-8"?>0 C" t6 U7 Y) J* w& g6 /- n h: W/ i
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="AMCP.Model.Dict,AMCP.Model" table="DICT" lazy="false">) U% Y4 ^# Y& @5 [. g
<id name="Id" column="ID" type="Decimal">
<generator class="assigned" />
</id>
<property type="string" not-null="true" length="2" name="Sort" column="SORT" />7 |. z5 }; O- w0 j9 M4 a* L
<property type="string" not-null="true" length="2" name="Code" column="CODE" />
<property type="string" not-null="true" length="10" name="Meaning" column="MEANING" />
<property type="string" length="100" name="Description" column="DESCRIPTION" />
</class>$ w5 b" E0 e; _. B' /- L2 h
</hibernate-mapping>5 C( j' i& B+ z1 ~4 Y0 P4 e0 o8 |
. }! b) W( E/ K
这儿生成nhibernate的那些model和hbm.xml的工具是用的 MyGeneration13
在网上下一个,用法还是很简单的.8 Y& O1 n; |2 q0 p
不过还是觉得没有 myeclipse 方便.0 K) ~$ Y, u* Y/ N _: {
! c1 n1 `3 H1 p) S L
基本上这几个问题搞定了,nhibernate + oracle 就算搞定了.
其他开发人员可以专心的去整 业务逻辑了.
不安装客户端oracle客户端 NHibernate配置Oracle链接
最新推荐文章于 2022-11-04 09:03:42 发布