JDK6笔记(6)----JDBC4.0高级应用

简介: JDK6笔记(6)----JDBC4.0高级应用  JDBC4.0高级应用 1、Annotations 在JDK1.5中annotation就存在了,在JDBC4中得到了加强。

JDK6笔记(6)----JDBC4.0高级应用 

JDBC4.0高级应用
1、Annotations
在JDK1.5中annotation就存在了,在JDBC4中得到了加强。annotation是程序的声明模块,放在注释那里,和代码元素相关联,用于在运行时注入代码。
annotation解决方案有两个元素:
1)是查询接口的声明,由java.sql.package包的BaseQuery接口扩展而来。
2)是QueryObject(查询对象),用于执行查询。
见下面的例子:
import java.sql.BaseQuery;
import java.sql.DataSet;
import java.sql.Select;
public interface QueryAnnotationExample extends BaseQuery{
 @Select(sql="SELECT ID,MODEL,MODEL_YEAR FROM CAR WHERE MODEL_YEAR=?1")
 Public DataSet getCarsModelYear(String year);
 }
下一步是使用对象工厂创建和执行这个语句。
public void testQueryAnnotation(){
 QueryAnnotationExample qae=null;
 try{
 String url="jdbc:derby://localhost:9527/mydb;create=true";
 Connection con=DriverManager.getConnection(url,"sa","password");
 qae=con.createQueryObject(QueryAnnotationExample.class);
 }catch(SQLException e){
  e.printStackTrace();
  
 Collection cars=qae.getCarsModelYear("1999");
 for(Car c:cars){
  System.out.println("car id="+c.getId()+" model="+c.getModel()+" year="+c.getYear());
  }
 }
2、事务管理(Transaction Management)
当处理数据源时,事务管理时非常重要的。事务管理能确保数据的完整性和数据的一致性。
要解释事务(Transaction),用ATM机作为例子非常适合。取钱的步骤如下:
1)插入你的银行卡;
2)输入PIN密码;
3)选择提款选项;
4)输入提款金额;
5)同意支付手续费;
6)取出钱。
在这过程中,任意错误将导致你的帐户金额的不一致,因此事务只包含两种结果:提交(commit)和回滚(rollback)。
JDBC的事务处理非常简单,你只需关系两样:Connection.commit和Connection.rollback。
在JDBC3.0介绍了一个新概念,“保存点”(savepoint)。保存点允许你在事务处理失败时,回滚到保存点。
见下面的例子:
Statement stmt=cConn.createStatement();
int nRows=stmt.executeUpdate("INSERT INTO PLAYERS(NAME) VALUES('Roger Thomas')");
//建立保存点
Savepoint spOne=cConn.setSavepoint("SAVE_POINT_ONE");
nRows=stmt.executeUpdate("INSERT INTO PLAYERS(NAME) VALUES('Jenifer White')");
//回滚到初始保存点
cConn.rollback(spOne);
//提交事务
cConn.commit();
在这个例子中,第二个SQL语句没有得到执行,因为在事务提交前被回滚到保存点了。

3、Hibernate
Hibernate是一个开源框架,面向对象的域模型(Object Oriented Domain Model)。这是对象关系映射(Object Relational Mapping,ORM)的特殊实现。
使用Hibernate,你可以隔离你的数据访问代码,作为应用程序设计的一部分。
如:
Business Logic --> JAVA Domain Objects(pojo) --> Hibernate --> JDBC
3.1)Hibernate组件
采用Hibernate解决方案,有4个主要的组件。
(1)Persistent Java Object
These are the java classes that represent your domain abstractions. Each object will map to one or more rows of data in a relational database.
(2)Hibernate Configuration File
The hibernate.cfg.xml file is for configuring global parameters of the ORM framework. This includes the database information and information affecting all persistent classes.
(3)Hibernate Mapping File
Each class that Hibernate persists needs an associated mapping file to describe the property-to-column mapping, and relationships defined between the classes.
(4)Hibernate API
Your application uses the Hibernate API to perform all data access. Hibernate translates those API calls into the correct INSERT, DELETE, UPDATE, and SELECT statements based on your configuration settings.
看下面的例子:
3.2)一个名叫Book的持久类,三个重要的事:
(1)是声明属性id,title,并创建了访问的方法;
(2)是一个无参数的构造器的声明,Hibernate使用映射来例示这些类;
(3)是equals()和hashcode()方法。
例子:
import java.util.Date;
public class Book{
 private long id;
 private String title;
 private Date created=new Date();
 public Book(){
 }
 public long getId(){
  return id;
 }
 public void setId(long id){
  this.id=id;
 }
 public String getTitle(){
  return title;
 }
 public void setTitle(String title){
  this.title=title;
 }
 public void setTitle(String title){
  this.title=title;
 }
 public boolean equals(object obj){
  if(obj==this) this true;
  if(!(obj instanceof Book)) return false;
  Book b=(Book)obj;
  if(this.title.equals(b.title)) return true;
  return false;
 }
 public int hashCode(){
  return this.title.hashCode();
 }
}
下面,我们来看Book.hbm.xml。
3.3)Hibernate映射文件
Hibernate Mapping File是一个XML文件,用于告诉Hibernate API 怎样把一个Java类持久化到关系型数据库中。映射文件有四个核心的元素:
(1)类到表的映射;
(2)一个id元素标识为表的主键;
(3)属性到列的映射;
(4)和其它持久化对象的关系。
这个XML文件包含了文档类型定义(document type definition),指定了文件所必须的和可选的方法。
<?xml version="1.0" encoding="UTF-8"?>
br /> "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

 
   
     
   
   
   
 

3.4)Hibernate配置文件(Hibernate Configuration File)
在你的应用程序中典型的仅有一个hibernate.cfg.xml文件。

目录
相关文章
|
4月前
|
Java
JDK动态代理笔记整理
JDK动态代理笔记整理
|
5月前
|
Java 数据库连接
JDBC课堂笔记
JDBC课堂笔记
29 1
|
5月前
|
Java 数据库连接 数据库
JDBC连接池&JDBCTemplate课堂笔记
JDBC连接池&JDBCTemplate课堂笔记
36 1
|
7月前
|
Java 程序员
终于不慌内卷了,多亏阿里内部的并发图册+JDK源码速成笔记
并发编程 Java并发在近几年的面试里面可以说是面试热点,每个面试官面试的时候都会跟你扯一下并发,甚至是高并发。面试前你不仅得需要弄清楚的是什么是并发,还得搞清什么是高并发! 在这里很多小白朋友就会很疑惑:我工作又不用,为啥面试总是问?真就内卷卷我呗!(手动狗头)互联网内卷已经是现在的行业趋势,而且是不可逆的,这个大家也知道;但LZ要说的是,虽然简单地增删改查并不需要并发的知识,但是业务稍微复杂一点,你的技术水平稍微提升一点的话你就会知道,并发是我们Java程序员绕不开的一道坎。
35 0
|
10月前
|
Java 容器
Alibaba新产:“Java并发笔记”闪耀来袭,JDK源码奥义尽在其中
JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。 没有JDK的话,无法编译Java程序(指java源码.java文件),如果想只运行Java程序(指class或jar或其它归档文件),要确保已安装相应的JRE。
|
10月前
|
SQL 算法 Java
直击灵魂!美团大牛手撸并发原理笔记,由浅入深剖析JDK源码
并发编程这四个字想必大家最近都在网上看到过有很多的帖子在讨论。我们都知道并发编程可选择的方式有多进程、多线程和多协程。在Java中,并发就是多线程模式。而多线程编程也一直是一个被广泛而深入讨论的领域。如果遇到复杂的多线程编程场景,大多数情况下我们就需要站在巨人的肩膀上利用并发编程框架——JDK Concurrent包来解决相关线程问题。
|
11月前
|
SQL 设计模式 Java
JAVA 笔记-JDBC(五)
JAVA 笔记-JDBC(五)
|
11月前
|
SQL druid 安全
JDBC超详细笔记
JDBC超详细笔记
71 0
|
11月前
|
Java 开发者 容器
先到先学!Alibaba甩出第四次更新的JDK源码高级笔记(终极版)
作为Java开发者,面试肯定被问过多线程。对于它,大多数好兄弟面试前都是看看八股文背背面试题以为就OK了;殊不知现在的面试官都是针对一个点往深了问,你要是不懂其中原理,面试就挂了。可能你知道什么是进程什么是线程,但面试官要是问你进程之间是如何通讯的?ConcurrentHashMap 和 HashTable有什么区别?为什么wait和notify方法要在同步块代码中调用?你答不上来就只能等通知了。。。
|
SQL 存储 缓存