Bom, pessoal li todo aquele documento, sobre DAO da core java lá do site da sun
http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
Acabei criando ele só nem sei se apliquei os conceitos certos será que alguém poderia verificar minhas classes, e me dar algumas dicas?
Ainda estou bem cru nisso. =P
package org.shimoyama.database.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public abstract class AbstractMusicDAO {
private Connection connection;
public AbstractMusicDAO() {
try{
this.connection = this.openConnection();
} catch (SQLException error) {
error.printStackTrace();
}
}
/**
* used to open a conection
* @return
*/
private Connection openConnection() throws SQLException {
Connection connection = null;
try{
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:music.dll");
}catch(ClassNotFoundException error){
error.printStackTrace();
}
return connection;
}
/**
*
* @return
*/
public Connection getConnection(){
return this.connection;
}
/**
*
* @throws SQLException
*/
public void closeConnection() throws SQLException {
this.connection.close();
}
/**
* Commit the actual transaction
* @throws SQLException
*/
public void commitTransaction() throws SQLException {
this.connection.commit();
}
/**
* Rollback the actual transaction
* @throws SQLException
*/
public void rollbackTransaction() throws SQLException {
this.connection.rollback();
}
/**
* turn on\off the auto-commit for any connection
* stablished previously
* @param auto
* @throws SQLException
*/
public void setAutoCommit(boolean auto) throws SQLException {
this.connection.setAutoCommit(auto);
}
}
package org.shimoyama.database.dao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.shimoyama.database.to.MusicTO;
public class MusicDAO extends AbstractMusicDAO{
public MusicDAO() {
}
/**
*
* @return
*/
public List<MusicTO> selectAllMusics(){
List<MusicTO> list = new ArrayList<MusicTO>();
StringBuffer sql = new StringBuffer();
sql.append("SELECT TITLE, ARTIST, ALBUM ");
sql.append("FROM TBLMUSIC");
PreparedStatement statement = null;
try {
statement = getConnection().prepareStatement(sql.toString().toLowerCase());
ResultSet result = statement.executeQuery();
while(result.next()){
MusicTO music = new MusicTO();
music.setAlbum(result.getString("album"));
music.setArtist(result.getString("artist"));
music.setTitle(result.getString("title"));
list.add(music);
}
} catch(SQLException error) {
error.printStackTrace();
} finally {
try{
getConnection().close();
statement.close();
}catch(SQLException error){
error.printStackTrace();
}
}
return list;
}
/**
*
* @param music
* @return
*/
public boolean insertOneMusic(MusicTO music){
boolean inserted = Boolean.FALSE;
int rows = 0;
StringBuffer sql = new StringBuffer();
sql.append("INSERT INTO tblmusic(");
sql.append("TITLE, ARTIST, ALBUM)");
sql.append("VALUES(?,?,?)");
PreparedStatement statement = null;
try{
getConnection().setAutoCommit(false);
statement = getConnection().prepareStatement(sql.toString());
statement.setString(1, music.getTitle());
statement.setString(1, music.getArtist());
statement.setString(2, music.getAlbum());
rows = statement.executeUpdate();
if(rows > 0){
getConnection().commit();
inserted = Boolean.TRUE;
} else {
getConnection().rollback();
inserted = Boolean.FALSE;
}
} catch(SQLException error) {
if(error.toString().equals("java.sql.SQLException: no such table: tblmusic")){
try{
sql = new StringBuffer();
sql.append("create table tblmusic (title, artist, album);");
statement = getConnection().prepareStatement(sql.toString());
statement.executeUpdate();
getConnection().commit();
insertOneMusic(music);
}catch(Exception ex){
ex.printStackTrace();
}
}
System.out.println("Error to String "+error.toString());
error.printStackTrace();
} finally {
try{
getConnection().close();
statement.close();
}catch(SQLException error){
error.printStackTrace();
}
}
return inserted;
}
/**
*
* @param music
* @return
*/
public boolean insertSortedMusics(List<MusicTO> music){
boolean inserted = Boolean.FALSE;
StringBuffer sql = new StringBuffer();
sql.append("INSERT INTO TBLMUSICS(");
sql.append("TITLE, ARTIST, ALBUM)");
sql.append("VALUES(?,?,?)");
Iterator<MusicTO> iteMusics = music.iterator();
PreparedStatement statement = null;
try{
getConnection().setAutoCommit(false);
statement = getConnection().prepareStatement(sql.toString());
while(iteMusics.hasNext()){
statement.setString(1, iteMusics.next().getTitle());
statement.setString(1, iteMusics.next().getArtist());
statement.setString(2, iteMusics.next().getAlbum());
statement.addBatch();
}
statement.executeBatch();
getConnection().commit();
}catch(SQLException error){
error.printStackTrace();
} finally{
try{
statement.close();
getConnection().close();
}catch(SQLException error){
error.printStackTrace();
}
}
return inserted;
}
/**
*
* @param music
* @return
*/
public boolean deletedMusic(MusicTO music){
boolean deleted = Boolean.FALSE;
return deleted;
}
/**
*
* @param music
* @return
*/
public boolean updatedMusic(MusicTO music){
boolean updated = Boolean.FALSE;
return updated;
}
public static void main(String[] agrrs){
List<MusicTO> list = new ArrayList<MusicTO>();
list = new MusicDAO().selectAllMusics();
for(MusicTO music :list){
System.out.println("Artista "+music.getArtist());
System.out.println("Album "+music.getAlbum());
System.out.println("Title "+music.getTitle());
}
}
}
package org.shimoyama.database.to;
public class MusicTO {
public MusicTO(){
}
private String title;
private String artist;
private String album;
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
public String getArtist() {
return this.artist;
}
public void setArtist(String artist) {
this.artist = artist;
}
public String getAlbum() {
return this.album;
}
public void setAlbum(String album) {
this.album = album;
}
}
package org.shimoyama.database.delegate;
import org.shimoyama.database.to.MusicTO;
import java.util.List;
import java.util.ArrayList;
public class MusicDelegate {
public MusicDelegate(){
}
/**
*
* @return
*/
public List<MusicTO> selectAllMusics(){
List<MusicTO> list = new ArrayList<MusicTO>();
return list;
}
/**
*
* @param music
* @return
*/
public boolean insertMusic(MusicTO music){
boolean inserted = Boolean.TRUE;
return inserted;
}
/**
*
* @param music
* @return
*/
public boolean deleteMusic(MusicTO music){
boolean deleted = Boolean.TRUE;
return deleted;
}
/**
*
* @param music
* @return
*/
public boolean updateMusic(MusicTO music){
boolean inserted = Boolean.TRUE;
return inserted;
}
}

