1.2.2 JDBC

JDBCJava Database Connectivity)是最常用的持久化方法,它能够把数据保存进关系型数据库,并且高效的将数据从数据库中查询出来。JDBC作为一种成熟的持久化方法,与序列化技术相比,其优势有是相当明显的。它能快速的读写大量的数据、支持事务性、保证数据的完整性、支持数据的并发读取等。也正式因为如此,JDBC作为Java的持久化技术,广泛用在各种商业程序中。

但美中不足的是,JDBC并不支持对Java对象的持久化。由于数据库大多数是二维的关系型数据库,因此持久化Java对象的时候,需要将Java对象变成相应SQL语句;还原Java对象的时候,需要从数据库结果集中取出各列的值,然后通过setter方法设置到Java对象上。

例如,使用JDBC技术,持久化Person对象时可能需要使用以下的SQL代码,将数据保存到数据库中,例如以下所示。

PersonDAO.java

         public void persist(Person person) throws Exception {

 

                   //获得数据库连接

                   Connection conn = DbManager.getConnection();

                   PreparedStatement preStmt = null;

 

                   try {

                            //创建预编译对象

                            preStmt = conn.prepareStatement(" "

                                               + " INSERT INTO tb_person ( name ) values (?) ");

                            preStmt.setString(1, person.getName());

                            //插入一条人员数据

                            preStmt.executeUpdate();

                            //分别插入爱好数据

                            for (String hobby : person.getHobby()) {

                                     preStmt = conn.prepareStatement(" INSERT INTO tb_hoby "

                                                        + " ( person_name, hoby ) " + " values (?, ?) ");

                                     preStmt.setString(1, person.getName());

                                     preStmt.setString(2, hobby);

                                     //执行插入操作

                                     preStmt.executeUpdate();

                            }

 

                   } catch (Exception e) {

                            preStmt.close();

                            conn.close();

                   }

         }

通过以上代码可以看出,使用JDBC持久化Java对象时需要写大量的SQL语句,当数据表结构或者Java对象属性发生变化的时候,JDBC的缺点就更加明显了。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值