- 浏览: 140680 次
- 性别:
- 来自: 杭州
最新评论
-
aa87963014:
很好,但是update/insert 是否加锁 。加锁对sel ...
数据库锁 -
RobustTm:
我的这种做法也可以添加A和B
但是换成更新就有问题
hibernate入门(十一):级联操作inversin属性 -
RobustTm:
这位仁兄可以提供一对多双向关联完整的代码不?
我碰到了问题,采 ...
hibernate入门(十一):级联操作inversin属性 -
cfeers:
markxing 写道谢谢分享。。。
不客气,呵呵。
struts2.0 struts.xml配置文件详解 -
markxing:
谢谢分享。。。
struts2.0 struts.xml配置文件详解
文章列表
SQL Server基本函数
1.字符串函数 长度与分析用
1,datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格2,substring(expression,start,length) 取子串,字符串的下标是从“1”,start为起始位置,length为字符串长度,实际应用中以len(expression)取得其长度3,right(char_expr,int_expr)
1.按姓氏笔画排序:Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多
2.数据库加密:select encrypt('原始密码')select pwdencrypt('原始密码')select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码')select pwdencrypt('原始密码')select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同
3.
1、1=1,1=2的使用,在SQL语句组合时用的较多
“where 1=1” 是表示选择全部 “where 1=2”全部不选,如:if @strWhere !='' beginset @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere endelse beginset @strSQL = 'select count(*) as Total from [' + @tblName + ']' end
我们可以直接写成
错误!未找到目录项。set @strSQL = 'select ...
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)法一:select * into b from a where 1<>1(仅用于SQlServer)法二:select top 0 * into b from a2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)insert into b(a, b, c) select d,e,f from b;
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
十三、总结:
1.主配置与实体(映射)配置:
关于这些配置,可以从网上搜到很多,当然最好的方式是从官方获取hibernate的参考手册,来细细研读这些配置,其实许多常用的配置在前面已基本有所提及,所以再来查看hibernate手册时会比较容易,至于一些不常用的配置,建议只做了解,在真正使用时再去细看。
2.使用最佳实践:
在官方推出的手册中,给出了最佳实践,其中提到了许多思想和建议。我们应该在使用hibernate的过程中尽量按官方的建议来实现,以养成好的习惯。
十二、一些细节问题分析
1.实体配置文件中的类型问题:
在前面的多个实例中配置<property>映射类型时,我们都采取的是hibernate默认的配置,即是说没有在<property>中配置type属性:其实基本类型一般不需要映射文件中配 ...
1.事务引发的三层架构MVC讨论:在前面的程序代码中多次用到了事务:Transaction tx = s.beginTransaction(); 对应的jdbc代码:connection. setAutoCommit(false);
.....
.....数据处理.....tx.commit(); 对应的jdbc代码:connec ...
>>步骤四、测试二级缓存:现在仍用前面的类来测试,尽管第一个session关闭了,但是我们在第二个session查询时,仍不会连库,这也就是二级缓存的作用,通常情况下,hibernate查询时会首先在一级缓存中查询数据,再到二级缓 ...
1.模拟缓存并简要说明缓存实现原理
在myhibernate项目下新建一个包com.asm.hibernate.test.cacheTest来说明与缓存有关的问题。首先看下面的一个模拟缓存程序,主要代码如下:
Java代码
package com.asm.hibernate.test.cacheTest;
public class CacheSimulate {
static Map cache = new HashMap();
public static void main(String[] args) {
...
4.懒加载:
在前面我们已经对懒加载有所提及,现在再借助一个简单的实例(它们均位于lazyLoad项目下)再来重新认识懒加载:先看下面的代码:
Java代码
package com.asm.hibernate.test;
public class UserTest2 {
public static void main(String[] args) {
addUser();
User u = getUser(1);
System.out.println(" ...
上接hiberante入门(十二):继承关系1
(3)联合使用表:
意思是同时使用(1)(2)的形式,主要目的是为了能使用鉴别类型,但同时也能“设定为非空”。同样只需要修改配置文件,修改后的内容如下:
Java代码
<cla ...
3.继承关系:
在前面的部门员工实例中,我们设定的员工只是普通的员工,现在假如有Sale和Skill两类员工,它们作为Employee的子类。如何实现这些子类的映射?为了方便以后的操作说明和不影响以前的操作,我们把前面用到的员工部门类及相关实体配置文件,主配置文件等拷贝到一个新的项目theExtend下进行操作。
(1)共享一张表:
意思是我们把子类的当作父类来处理共同映射成一张表。
>>步骤一,创建Employee的子类:Sale和Skill。内容如下:
Java代码
package com.asm.hibernate.domain;
pub ...
九、关联关系中的高级应用
1.级联操作:
在前面的一对多操作中已经有所体现,现在回到前面的一对多操作中,进行一些修改,修改内容如下:
Set<Employee> emps = new HashSet<Employee>();
emps.add(emp1);
emps.add(emp2);
depart.setEmps(emps);去掉这段注释,并把“s.save(emp1); s.save(emp2);”注释掉,然后运行发现出错。原因是:当我们保存Department depart对象时,发现它所关联到的两个Employee emp对象并未保存,而这种要依 ...
八、其它集合类型
说明:在前面我们已经使用过set集合类型,其实除了set外,在Hibernate中还有list、Bag、Map这三种集合类型。
1. list集合的使用:
在前面的“一对多的关系”,已经使用过<set>,为了保存以前的操作,现重建一个名为“TheCollectionMapping”的新项目,把以前的“一对多关系”中用到的相关内容复制到此项目下即可。但有几点需要特别注意:(1)同样注意导入包,并注意主配置文件对实体配置文件的关联 (2)需要修改原Department中的<set>内容为:private List<Employee> ...
5.组件关系映射:
典型实例:每个人有不同的名字,或者多个人可以是同一个名字,对于这种现象可以是“一个一”或者“多对一”,这样会被设计成两张表来映射,而我们采用组件关系来映射就可以在一张表中映射实现。具体过程如下:
>>步骤一、编写实体文件Name.java 和People.java
Name.java内容如下: 省略getXXX和setXXX()
Java代码
package com.asm.hibernate.domain;
public class Name {
private String firstName; ...