Java 在实现抽象工厂时,我应该以单例的方式实现DAO,还是有更好的方法?
我有一个DaoFactory抽象类,它返回具体的工厂,我只对Mysql做过Java 在实现抽象工厂时,我应该以单例的方式实现DAO,还是有更好的方法?,java,jdbc,design-patterns,singleton,dao,Java,Jdbc,Design Patterns,Singleton,Dao,我有一个DaoFactory抽象类,它返回具体的工厂,我只对Mysql做过 public abstract class DAOFactory { public static final int MYSQL = 1; public abstract CarDao getCarDao(); public abstract UserDao getUserDao(); public abstract OrderDao getOrderDao(); public a
public abstract class DAOFactory {
public static final int MYSQL = 1;
public abstract CarDao getCarDao();
public abstract UserDao getUserDao();
public abstract OrderDao getOrderDao();
public abstract CarCategoryDao getCarCategoryDao();
public static DAOFactory getDAOFactory(
int whichFactory) {
switch (whichFactory) {
case MYSQL:
return new MySQLDAOFactory();
default :
return null;
}
}
}
我有一个MysqlFactory,它返回Dao实现
public class MySQLDAOFactory extends DAOFactory {
private static final Logger LOGGER = LogManager.getLogger(MySQLDAOFactory.class);
private static DataSource DATA_SOURCE;
public static void dataSourceInit(){
try {
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:comp/env");
DATA_SOURCE = (DataSource) envContext.lookup("jdbc/UsersDB");
} catch (NamingException e) {
LOGGER.error(e);
}
}
public static Connection getConnection(){
Connection connection = null;
if(DATA_SOURCE==null){
dataSourceInit();
}
try {
connection = DATA_SOURCE.getConnection();
} catch (SQLException e) {
LOGGER.error(e);
}
return connection;
}
@Override
public CarDao getCarDao() {
return new MySQLCarDao();
}
@Override
public UserDao getUserDao() {
return new MySQLUserDao();
}
@Override
public OrderDao getOrderDao() {
return new MySQLOrderDao();
}
@Override
public CarCategoryDao getCarCategoryDao() {
return new MySQLCarCategoryDao();
}
}
我需要制作Dao单例还是有更好的方法?我从oracle网站上获得了这个实现这是为了学习练习还是用于实际目的的代码?@chrylis-cautiouslyoptimistic-你能告诉我每种情况吗?感谢您在实际使用中,更好的方法是“不要这样做”,并使用JPA、Spring数据或两者兼用。