不安装客户端oracle客户端 NHibernate配置Oracle链接

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 就算搞定了.

其他开发人员可以专心的去整 业务逻辑了.

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值