摘要: 1 有安全性 PreparedStatement 可以由于不是使用拼接,防止了sql注入,提高了安全性。2 更方便PreparedStatement 可以自动对类型进行转换,代码可读性,可维护性提高。3 批处理 PreparedStatement 有预编译功能,大批量的处理sql效率更高。(MySQL 不明显,Oracle 非常明显) 阅读全文
posted @ 2011-11-13 10:28 蓝冰竹斋 阅读(1682) 评论(0) 推荐(1) 编辑
摘要: 下面程序沿用上面的封装。1 插入数据public boolean ChaRu3(User user){ boolean flag=true; Connection conn=null; PreparedStatement ps=null; //创建PreparedStatement 对象 String sql= "insert into user (name,pwd) values(?,?)"; //sql语句不再采用拼接方式,应用占位符问号的方式写sql语句。 conn=DBConnUtil.getConn(); ... 阅读全文
posted @ 2011-11-13 10:12 蓝冰竹斋 阅读(84655) 评论(0) 推荐(10) 编辑
摘要: 1 封装 新建类 DBConnUtil ,新建database.properties 文件储存链接信息如下所示jdbcDriver=com.mysql.jdbc.DriverjdbcUrl=jdbc\:mysql\://localhost\:3306/homeworkjdbcUser=rootjdbcPasswd=123public class DBConnUtil { private static String jdbcDriver = ""; //定义连接信息 private static String jdbcUrl = ""; private s 阅读全文
posted @ 2011-11-12 22:51 蓝冰竹斋 阅读(2734) 评论(0) 推荐(1) 编辑
摘要: 准备工作 1新建po类:User private int id; private String name; private String pwd; set,get方法省略 2 新建UserDao类,存放增删改查的相关方法,并且定义链接数据库的相关性信息(链接地址,用户名,密码);public class UserDao { private static String jdbcDriver = "com.mysql.jdbc.Driver"; private static String jdbcUrl="jdbc:mysql://... 阅读全文
posted @ 2011-11-12 16:58 蓝冰竹斋 阅读(7445) 评论(1) 推荐(4) 编辑
摘要: 1 Hibernate 缓存缓存是数据库数据在内存中的临时容器,它包含了库表数据在内存中的临时拷贝,位于数据库和访问层之间。ORM在进行数据读取时,会根据缓存管理策略,首先在缓冲中查询,如果发现,则直接使用,避免数据库调用的开销。 数据缓存的策略: •事务级缓存:当前事务范围内的数据缓存 •应用级缓存:某个应用中的数据缓存 •分布式缓存:多个应用,多个JVM之间共享缓存。分布式缓存由多个应用级缓存实例组成集群,通过某种远程机制实现各个缓存实例之间的数据同步,任何一个实例的 数据修改后,将导致整个集群间的数据状态同步。2 一级缓存一级缓存的数据结构是Map... 阅读全文
posted @ 2011-11-07 16:19 蓝冰竹斋 阅读(823) 评论(0) 推荐(0) 编辑
摘要: 1 分页 setFirstResult(0),(从0开始) setMaxResults(5),每页显示5条数据 public void Test1() throws Exception{ Configuration config=new Configuration().configure(); SessionFactory sessionFactory= config.buildSessionFactory(); Session session=null; Transaction tr=null; try{ ... 阅读全文
posted @ 2011-11-06 12:08 蓝冰竹斋 阅读(5559) 评论(0) 推荐(1) 编辑
摘要: 本笔记继续使用dept部门表,emp员工表,一对多多对一双向映射。1 条件查询1.1 查询 员工表emp中 年龄eage小于30,月薪esal大于20000的员工姓名enamesql:select ename from emp where eage<? and esal >?;hql: select ename from Emp where eage<? and esal >?1.2 问号的设置与别名问号(?)的设置使用.setParameter(位置, 属性值) 在sql语句中问号的位置是从1开始,在hql中从零开始。在hql中,问号(?)也可以起别用,:后面紧跟别名 阅读全文
posted @ 2011-11-05 23:48 蓝冰竹斋 阅读(42464) 评论(1) 推荐(2) 编辑
摘要: HQL是Hiberante官方推荐的Hibernate检索方式,它使用类似SQL的查询语言,以面向对象的方式从数据库中查询。可以使用HQL查询具有继承、多态和关联关系的数据。在检索数据时应优先考虑使用HQL方式。本笔记将会沿用前面所使用的dept部门表,emp员工表。dept部门表emp员工表1 查询实体 hibernate的session.createQuery()方法是使用HQL语句查询对象的。 hql:是查询对象的,例如:"from User",其中from不区分大小写,而User是区分大小写,因为它是对象。是User类返回Query对象。执行这条语句后,Hibern 阅读全文
posted @ 2011-11-05 16:28 蓝冰竹斋 阅读(12026) 评论(1) 推荐(5) 编辑
摘要: 1 多对一关系(many to one) 多对一关系就是多的一方(员工类Emp)拥有一的一方(部门类Dept)的引用,一个员工必然属于一个部门,所以员工表中要有部门的信息(部门编号did),这就是对部门类Dept的引用。 表关系与类关系如下所示,类Emp中的dept对应表emp中的did。多对一关系中,外键往往在多的一方。箭头指向被引用处映射文件:<hibernate-mapping > <class name="com.pk.Test.po.Dept" table="dept"> //Dept类的映射 <id name=& 阅读全文
posted @ 2011-11-05 00:35 蓝冰竹斋 阅读(1007) 评论(0) 推荐(1) 编辑
摘要: 1identity<特点:只能用在支持自动增长的字段数据库中使用,如MySQL>identity由底层数据库生成标识符。identity是由数据库自己生成的,但这个主键必须设置为自增长,使用identity的前提条件是底层数据库支持自动增长字段类型,如DB2、SQL Server、MySQL、Sybase和HypersonicSQL等,Oracle这类没有自增字段的则不支持。范例: <id name="id" column="id"> <generator class="identity" /> & 阅读全文
posted @ 2011-11-04 01:27 蓝冰竹斋 阅读(518) 评论(0) 推荐(1) 编辑