spring整合hibernate3 中怎么插入一列

 我来答
育知同创教育
2016-03-20 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
插入一列的前提是必须用代理主键。
代理主键就是采用一个与当前表中逻辑信息无关的字段作为其主键,比如在一张表中插入一列与业务数据毫无关系的数据。
主配置文件可以包含三类信息的配置:数据库连接信息、其他配置和声明映射文件.例如:
<hibernate-configuration>
<session-factory>
<!-- 数据库连接信息 -->
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

<!-- 其他配置 -->
<property name="show_sql">true</property>
<!-- 自动生成表结构,可选择的值有:
create:每次启动时创建表结构,在建表前会先执行删除表的语句,以保证创建成功。
update:每次启动时检测一下,如果表结构没有,则创建,不一样,则更新。
create-drop: 每次启动时创建表结构,退出前删除表结构
validate: 每次启动时检测一下,如果表结构不一样,就报错

但是hbm2ddl.auto属性的配置一般在新增时有效,更新时无效.需要注意一下.
-->
<property name="hbm2ddl.auto">update</property>

<!-- 声明映射文件 -->
<mapping resource="../../domain/Person.hbm.xml" />

</session-factory>
</hibernate-configuration>

主配置文件相对简单,以后数据库的连接信息也不用放在主配置文件中.主配置文件里面配置了一个sessionFactory,Hibernate把一次数据库的访问当作是会话来看待,我们就需要在程序中获得会话,就要利用到sessionFactory,sessionFactory由主配置文件来描述,我们就先要读取调查主配置文件,然后由Hibernate来产生sessionFactory:
private static SessionFactory sessionFactory = new Configuration()
.configure()
.buildSessionFactory();
读取主配置文件的方法有多种,都是Configuration类的configure()方法重载的版本,最简单的就是将主配置文件命名为hibernate.cfg.xml,原因如下:
public Configuration configure() throws HibernateException {
configure( "/hibernate.cfg.xml" );
return this;
}
这是源码.然后我们在主配置文件中利用<mapping>标签声明了映射文件,这个标签会找到指定的类,然后把相应的映射文件加载进来,我们还有另外一种方法加载映射文件:
private static SessionFactory sessionFactory = new Configuration()
.configure()
.addClass(Person.class)
.buildSessionFactory();
只是比之前的代码多了一行,addClass()方法的返回值仍是Configuration对象,意味着如果你还有映射文件没有加载进来,仍可能继续接着写,那么它是如何找到映射文件的呢?其实很简单,我们一样可以写出来:
public Configuration addClass(Class persistentClass) throws MappingException {
String mappingResourceName = persistentClass.getName().replace( '.', '/' ) + ".hbm.xml";
log.info( "Reading mappings from resource: " + mappingResourceName );
return addResource( mappingResourceName, persistentClass.getClassLoader() );
}
这是它的源码,先得到类的全限定名,再把点替换把/,就得到了路径,再连接后缀,就行了,方法本身很简单,我们也要掌握它的思想,也就是方法调用链.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式