JavaFX + HIbernate 로 데이터 저장, 삭제, 업데이트 CRUD 만들기
USER VO를 생성한다.
@Entity
@Table(name = "USER")
public class User {
@Id
@Column(name = "ID")
private String id;
@Column(name = "NAME")
private String name;
}
Controller 구현
user 객체를 만들고 saveOrUpdateEntity로 저장, 업데이트
deleteEntity로 객체 삭제
public class Controller implements Initializable {
private Dao dao;
@Override
public void initialize(Url location ResourceBundle resources){
User user = new User();
user.setId("1");
user.setName("na");
// 데이터 저장, 업데이트
dao.saveOrUpdateEntity(user);
dao.flushOrClear();
// 데이터 삭제
dao.deleteEntity(user);
dao.flushOrClear();
}
}
GenericDAO 인터페이스
public interface GenericDAO<T, ID extends Serializable> {
T findById(ID id, boolean lock);
List<T> findAll();
List<T> findByExample(T exampleInstance, String... excludeProperty);
T saveOrUpdateEntity(T entity);
void deleteEntity(T entity);
void flushOrClear();
}
GenericHiberntateDAO 구현
Dao가 Session을 주입할 수 있게 Session을 가져온다.
public abstract class GenericHibernateDAO<T, ID extends Serializable> implements GenericDAO<T, ID> {
private Session session;
private final Class<T> persistentClass;
@SuppressWarnings("unchecked")
public GenericHibernateDAO(){
this.persistentClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
public void setSession(Session session){
this.session = session;
}
protected Session getSession(){
if(session == null){
session = HibernateUtil.getSessionFactory().openSession();
}
return session;
}
public Class<T> getPersistentClass(){
return persistentClass;
}
@Override
public T saveOrUpdateEntity(T entity) {
getSession().saveOrUpdate(entity);
return entity;
}
@Override
public void flushOrClear() {
getSession().flush();
getSession().clear();
}
@Override
public void deleteEntity(T entity) {
getSession().delete(entity);
}
}
HibernateUtil 클래스
public class HibernateUtil {
private static SessionFactory sessionFactory;
static {
try{
Configuration configuration = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
sessionFactory = configuration.buildSessionFactory(builder.build());
} catch(HibernateException e){
}
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static void shutdown() {
getSessionFactory().close();
}
}
'JavaFX' 카테고리의 다른 글
[JavaFX] 윈도우 로그인 화면 제목 타이틀바 없애고 화면 이동 드래그 하기 (0) | 2020.07.13 |
---|---|
[JavaFX] 자바FX ComboBox Event 데이터 저장, 데이터 선택 (0) | 2020.07.06 |
[JavFX] 자바FX Platform runLater 쓰레드 UI 변경 (0) | 2020.06.24 |
[JavaFX] com sun javafx css parser CSSParser declaration (0) | 2020.06.22 |
[JavaFX] 자바FX + Hibernate - ids for this class must be manually assigned before calling save() 에러 (0) | 2020.06.19 |