JDBCBookDAOImpl.java
- package ejava.examples.daoex.dao;
- import java.lang.reflect.Field;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.List;
- import javax.persistence.PersistenceException;
- import ejava.examples.daoex.bo.Book;
- public class JDBCBookDAOImpl implements BookDAO {
- private Connection connection;
-
- public void setConnection(Connection connection) {
- this.connection = connection;
- }
- @Override
- public Book create(Book book) throws PersistenceException {
- try (PreparedStatement insertStatement=getInsertPreparedStatement(connection, book);
- PreparedStatement idStatement=getIdentityStatement(connection)){
- insertStatement.execute();
-
- try (ResultSet rs = idStatement.executeQuery()) {
- if (rs.next()) {
- Field id = Book.class.getDeclaredField("id");
- id.setAccessible(true);
- id.set(book, rs.getLong(1));
- } else {
- throw new PersistenceException("no identity returned from database");
- }
- } catch (NoSuchFieldException ex) {
- throw new PersistenceException("Error locating id field", ex);
- } catch (IllegalAccessException ex) {
- throw new PersistenceException("Access error setting id", ex);
- }
-
- return book;
- } catch (SQLException ex) {
- throw new PersistenceException("SQL error creating book", ex);
- }
- }
-
- private PreparedStatement getInsertPreparedStatement(Connection c, Book book) throws SQLException {
- PreparedStatement statement=connection.prepareStatement(
- "insert into JPADAO_BOOK (ID, DESCRIPTION, PAGES, TITLE) " +
- "values (null, ?, ?, ?)");
- statement.setString(1, book.getDescription());
- statement.setInt(2, book.getPages());
- statement.setString(3, book.getTitle());
- return statement;
- }
-
- private PreparedStatement getIdentityStatement(Connection c) throws SQLException {
- PreparedStatement statement = connection.prepareStatement("call identity()");
- return statement;
- }
- @Override
- public Book update(Book book) throws PersistenceException {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public Book get(long id) throws PersistenceException {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public void remove(Book book) throws PersistenceException {
- // TODO Auto-generated method stub
- }
- @Override
- public List<Book> findAll(int start, int count) throws PersistenceException {
- // TODO Auto-generated method stub
- return null;
- }
- }