
二.在默认src下创建hibernate.cfg.xml
1.创建xml文件,命名为hibernate.cfg.xml
2.添加约束
(在org.hibernate/hibernate-configuration-3.0.dtd中)
1 <!DOCTYPE hibernate-configuration PUBLIC2 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"3 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration><session-factory> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="connection.url">jdbc:mysql://localhost:3306/houserentsys</property> <!-- houserentsys是数据库名称 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.username">root</property> <property name="connection.password">123456</property>
<property name="show_sql">true</property> <property name="format_sql">false</property> <!-- 设置为false就会不换行 --> <property name="hbm2ddl.auto">update</property> <!-- 进行 *** 作时不会删除重建-->
<!--hbm2ddl.auto属性:
c
reate-drop: 也表示创建,只不过再系统关闭前执行一下drop
update: 这个 *** 作启动的时候会去检查schema是否一致,如果不一致会做scheme更新
validate: 启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新
-->
<mapping resource="edu/tsinghua/entity/mapping/district.xml"/> <mapping resource="edu/tsinghua/entity/mapping/street.xml"/>
</session-factory></hibernate-configuration>
hbm2ddl.auto属性:
create:表示启动的时候先drop,再create
create-drop: 也表示创建,只不过再系统关闭前执行一下drop
update: 这个 *** 作启动的时候会去检查schema是否一致,如果不一致会做scheme更新
validate: 启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新
三.实体 实现序列化接口 封装属性和构造方法实体.xml 位置随意
(在org.hibernate/hibernate-mapping-3.0.dtd中)
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
在hibernate.cfg.xml 添加 映射文件的引用
<mapping resource="edu.tsinghua.entity.mapping.district"/>
七个步骤(在新建的执行文件Test.java中)
//1.加载配置文件
Configuration cfg=new Configuration().configure()
//2.获得sessionfactory
ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry()
SessionFactory sf=cfg.buildSessionFactory(serviceRegistry)
//3.创建session
Session session=sf.openSession()
//4.创建事务
Transaction tx=session.beginTransaction()
//5. *** 作
District dis=new District(100,"海淀区")
session.save(dis)
//6.提交 回滚
tx.commit()//tx.rollback()
//7.释放资源
关于如何使用Nhibernate配置连接其支持的数据源,网上一些相关的文档已经详细作了说明,同时在其2.0帮助文档中也有相关的描述。一般常用的有两种方式:一、使用配置文件nfig)连接数据库
下面以使用Nhibernate2.2连接Oracle10数据库为例,给出连接配置信息如下:
<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
</configSections>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory name="NHibernate.Test">
<property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>
<property name="nnection_string">User ID=hzgaPassword=hzgaData Source=orclPersist Security Info=True</property>
<property name="show_sql">false</property>
<property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
</session-factory>
</hibernate-configuration>
二、通过提供一个IDictionary实例连接数据库
下面还是以使用Nhibernate2.2连接Oracle10数据库为例,给出连接配置信息如下:
cfg = new Configuration()
IDictionary<string, string>connProps = new Dictionary<string, string>()
connProps.Add("connection.driver_class", "NHibernate.Driver.OracleClientDriver")
connProps.Add("nnection_string", "User ID=hzgaPassword=hzgaData Source=orclPersist Security Info=True")
connProps.Add("query.substitutions", "true 1, false 0, yes 'Y', no 'N'")
connProps.Add("dialect", "NHibernate.Dialect.Oracle10gDialect")
connProps.Add("proxyfactory.factory_class", "NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu")
cfg.SetProperties(connProps)
cfg.AddAssembly(AssemblyName)
sessions = cfg.BuildSessionFactory()
三、如何使用Nhibernate动态直接连接Oracle数据库
上述两种方式都可以成功连接到Oracle数据库,但是前提条件是运行程序时需要安装Oracle客户端。在程序发布部署的时候安装Oracle客户端是一件非常麻烦的事件,那么有没有一种比较好的方法可以直接连接Oracle数据库,同时又不必安装Oracle客户端呢。
答案是肯定的,下面提供两种方式直接连接Oracle数据库:
1、通过OleDB和Oracle公司的驱动
cfg = new Configuration()
IDictionary<string, string>connProps = new Dictionary<string, string>()
connProps.Add("connection.driver_class", "NHibernate.Driver.OleDbDriver")
connProps.Add("nnection_string", "Provider=OraOLEDB.Oracle.1User ID=hzgaPassword=hzgaData Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.13.148)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))")
connProps.Add("query.substitutions", "true 1, false 0, yes 'Y', no 'N'")
connProps.Add("dialect", "NHibernate.Dialect.Oracle10gDialect")
connProps.Add("proxyfactory.factory_class", "NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu")
cfg.SetProperties(connProps)
cfg.AddAssembly(AssemblyName)
sessions = cfg.BuildSessionFactory()
2、通过OLEDB和微软公司的Oracle驱动
cfg = new Configuration()
IDictionary<string, string>connProps = new Dictionary<string, string>()
connProps.Add("connection.driver_class", "NHibernate.Driver.OleDbDriver")
connProps.Add("nnection_string", " Provider=MSDAORA.1User ID=lportalPassword=lportalData Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = zhbrserver)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))")
connProps.Add("query.substitutions", "true 1, false 0, yes 'Y', no 'N'")
connProps.Add("dialect", "NHibernate.Dialect.Oracle10gDialect")
connProps.Add("proxyfactory.factory_class", "NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu")
cfg.SetProperties(connProps)
cfg.AddAssembly(AssemblyName)
sessions = cfg.BuildSessionFactory()
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)