??xml version="1.0" encoding="utf-8" standalone="yes"?>
Q?Q?span style="font-family: "Times new roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
持久层(Persistence LayerQ,即专注于实现数据持久化应用领域的某个特定pȝ的一个逻辑层面Q将数据使用者和数据实体相关联?/span>
Q?Q?span style="font-family: "Times new roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
1、徏立数据库q接Q获?span xml:lang="EN-US" lang="EN-US">Connection对象?/span>
2、根据用L(fng)输入l装查询SQL语句?/span>
3、根?span xml:lang="EN-US" lang="EN-US">SQL语句建立Statement对象或?span xml:lang="EN-US" lang="EN-US">PreparedStatement对象?/span>
4、用Connection对象执行SQL语句Q获得结果集ResultSet对象?/span>
5、然后一条一条读取结果集ResultSet对象中的数据?/span>
6、根据读取到的数据,按特定的业务逻辑q行计算?/span>
7、根据计得到的l果再组装更?span xml:lang="EN-US" lang="EN-US">SQL语句?/span>
8、?span xml:lang="EN-US" lang="EN-US">Connection对象执行更新SQL语句Q以更新数据库中的数据?/span>
9、最后依ơ关闭各?span xml:lang="EN-US" lang="EN-US">Statement对象?span xml:lang="EN-US" lang="EN-US">Connection对象?/span>
q种模式下开发和l护SQL困难Q出现大量的重复代码Q而且q种模式的业务处理逻辑和数据存储逻辑h在一P试和维护有一定的隑ֺQ如要对其中某些业务逻辑或者一些相兌的业务流E做修改Q要改动的代码量不可想象?/span>
Q?Q?span style="font-family: "Times new roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
Q?Q?span style="font-family: "Times new roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
ibatis?span xml:lang="EN-US" lang="EN-US">hibernate都是ORM解决Ҏ(gu),不同的是两者各有侧重?span xml:lang="EN-US" lang="EN-US">Hibernate提供?span xml:lang="EN-US" lang="EN-US">Java对象到数据库表之间的直接映射Q开发者无需直接涉及(qing)数据库操作的实现l节Q实C(jin)一站式?span xml:lang="EN-US" lang="EN-US">ORM解决Ҏ(gu)。?span xml:lang="EN-US" lang="EN-US">ibatis则采取了(jin)另一U方式,x?span xml:lang="EN-US" lang="EN-US">Java对象?span xml:lang="EN-US" lang="EN-US">SQLQ面向参数和l果集)(j)的映实玎ͼ实际的数据库操作需要通过手动~写SQL实现。和Hibernate相比Q?span xml:lang="EN-US" lang="EN-US">iBatis最大的特点是yQ上手很快。如果你不需要太多复杂的功能Q?span xml:lang="EN-US" lang="EN-US">iBatis是能满你的要求又够灵zȝ最单的解决Ҏ(gu)?/span>
DriverManagerc?/span> |
Connection |
Connectionc?/span> |
Statement |
Statementc?/span> |
ResultSet |
ResultSetc?/span> |
Boolean next() String getString(String columnLabel) |
使用JDBCҎ(gu)据库q行(g)索的步骤Q?/span>
加蝲JDBC驱动E序Q?span xml:lang="EN-US" lang="EN-US">DriverManagerc)(j)
创徏数据库连接的Connection对象
创徏Statement对象q执?span xml:lang="EN-US" lang="EN-US">SQL语句Q返?span xml:lang="EN-US" lang="EN-US">ResultSet对象
使用ResultSet对象遍历数据?/span>
例子Q?/span>
使用mysql数据库,版本?span xml:lang="EN-US" lang="EN-US">5.1Q驱动程序ؓ(f)mysql-connector-java-5.1.8-bin.jar
建立数据?span xml:lang="EN-US" lang="EN-US">coffeeQ表test
E序
执行l果?/span>
DriverManagerc:(x)负责理?span xml:lang="EN-US" lang="EN-US">JDBC应用加蝲的驱动程序的讉KQ其中主要的Ҏ(gu)?span xml:lang="EN-US" lang="EN-US">Connection getConnection(String url)Q参?span xml:lang="EN-US" lang="EN-US">url用于q接数据库,格式?span xml:lang="EN-US" lang="EN-US">jdbc:subprotocol:subname
常用数据库的驱动E序? JDBC URL:
<一> Oracle 数据?:
驱动E序包名Q?ojdbc14.jar
驱动cȝ名字Q?oracle.jdbc.driver.OracleDriver
JDBC URL?span xml:lang="EN-US" lang="EN-US">jdbc:oracle:thin:@IP:1521:databasename
<?span xml:lang="EN-US" lang="EN-US">> SQL Server 数据?/span>
驱动E序包名Q?span xml:lang="EN-US" lang="EN-US">msbase.jar?span xml:lang="EN-US" lang="EN-US">mssqlserver.jar?span xml:lang="EN-US" lang="EN-US">msutil.jar
驱动cȝ名字Q?span xml:lang="EN-US" lang="EN-US">com.microsoft.jdbc.sqlserver.SQLServerDriver
JDBC URL ?span xml:lang="EN-US" lang="EN-US">jdbc:microsoft:sqlserver://IP:1433;DatabaseName
<?span xml:lang="EN-US" lang="EN-US">> MySQL 数据?/span>
驱动E序包名Q?mysql-connector-java-3.1.11-bin.jar
驱动cȝ名字Q?com.mysql.jdbc.Driver
JDBC URL Q?jdbc:mysql:// IP:3306/databasename
Connectionc:(x)主要用语创徏Statement对象Q可以用这?span xml:lang="EN-US" lang="EN-US">Statement对象在数据库上执?span xml:lang="EN-US" lang="EN-US">SQL语句?span xml:lang="EN-US" lang="EN-US">DriverManagerq回一?span xml:lang="EN-US" lang="EN-US">Connectioncd的对象(getConnectionҎ(gu)的返回|(j)Q?span xml:lang="EN-US" lang="EN-US">Connection对象代表?jin)与数据库的q接?/span>
Statementc:(x)用于在数据库上执?span xml:lang="EN-US" lang="EN-US">SQL语句?/span>
PreparedStatementc:(x)也是允许在数据库上执?span xml:lang="EN-US" lang="EN-US">SQL语句。在执行前先把查询语句呈现给数据库,多次执行?span xml:lang="EN-US" lang="EN-US">SQL语句性能?x)更好?/span>
ResultSetc:(x)用于遍历SQL?span xml:lang="EN-US" lang="EN-US">select语句执行后返回的l果?/span>
DataSourcec:(x)javax.sql.DataSource实现Q封装了(jin)数据库连接的l节。连接池和分布式事务都是通过DataSource来实现的?/span>