분류 전체보기 850

UML 자동 생성기

출처 : http://fuzz-box.blogspot.kr/2012/09/how-to-generate-uml-diagrams-from-java.html 이클립스에서 install new software에서http://www.objectaid.net/update이걸 치고 Class Aid Explorer 밑에 Object Class Diagram만 체크해서 받는다 (나머지는 라이센스가 필요하다.)그리고 new->others에 가면 class diagram을 그릴수 있다.그냥 객체를 잡아서 화면에 던져넣으면 알아서 그려준다. 화면에다 대고 오른쪽 마우스를 클릭해서 이미지 파일로 저장도 가능하다

디자인 2014.10.22

Exception을 이용한 트랜잭션 익셉션 처리

//TransactionException클래스를 하나 만든후 public class TransactionManager { //private static Connection conn; //static은 오직 메모리에 하나만 있기 때문에 여러쓰레드에서 사용할경우 문제발생 //밑에것처럼 만들면, 하나의 흐름에서 하나의 쓰레드를 만들수 있다. private static ThreadLocal tlocal = new ThreadLocal(); public static void begin() throws TransactionException{ try{ Connection conn = DBUtil.getConnection(); conn.setAutoCommit(false); tlocal.set(conn); //이렇게 ..

커밋과 롤백

트랜잭션은 하나의 논리적인 작업단위임. 그래서 하나의 작업을 하고있으면, 커밋이 안된상태에서 다른곳에서 접근하려고 하면 그냥 멈춘다. 락이 걸린다. DDL작업시 데이터정의를 하기때문에 자동 커밋된다.커넥션이 연결된 자바에서는 오토커밋 처리다.만약 트랜잭션을 하기위해서는conn.setAutoCommit(flase);를 선언하주고conn.commit();을 맨 나중에 하면 된다.그리고 exception 이 나면 conn.rollback();으로 예외처리를 하게 하면 된다.

데이터베이스 2014.10.21

사용자의 입력을 받아 클래스 만들기

Class.forName()을 사용하면 된다 String userNumber = "1";String className = "Child01" + userNumber;Class clazz = Class.forName(className); PERM에 올라간다그리고 난후 Object obj = clazz.newInstance();를 이용해 객체를 만들면 된다.그리고 다운캐스팅해서 쓰면된다. 이게 ClassLoader를 이용한 객체생성이다 안드로이드에서도 Activity를 상속한 놈들이 클래스로 돌아가게 되는데, 그 클래스이름은 사용자별로 제각각인데, 이 프레임워크들은 이러한 개념으로 만들어주는것이다. 따라서 나중에 프레임워크를 만들게 되면, 보통 이러한 동작원리로 작동한다.

layer별로 Exception다르게 하기

어디서 오류가 났는지 솔직히 힘들기 때문에, Exception을 차라리 BizException, DAOException이렇게 표시하기도 한다. 비즈니스 로직이 있는 곳에서 에러가 나면 해당하는 에러가 나기때문에 어디서 났는지 알수있다. 어떠한 Exception이 발생하든간에, catch(Exception e){ throw new DAOException(e)}이러한 형식으로 던져버리면, 해당하는 DAOException으로 던져지기 때문에, DAO에서 예외가 났다고 할수있다. 받아서 가공해서 다시 넘긴다고 할수있을듯다만 Exception 클래스에서는 public class DAOException extends RuntimeException{public DAOException(Exception ex){supe..

⑪ 디자인 패턴(Design Pattern) - Single Ton

싱글톤 패턴. 보통의 클래스는 new를 이용해서 새로운 객체를 생성하고 그것을 이용하게 된다. 다만, 단순한 프로그램의 경우에는 굳이 패턴들에대해 고민하지 않고 main에서 new를 한번 해준다음에 필요한 작업을 한다. 하지만 여러 클래스와 산재해 있는 함수에서 같은 객체에 접근해야할 필요가 있을 수 있다. 그 예로, 안드로이드 프로그램같은 경우, 대부분 VIEW하나에 public 클래스가 하나씩 존재한다. 하지만, 프로그램을 개발하다 보면 객체를 공유해서 써야하는 경우가 있다. 파일시스템이나 데이터베이스에서 가져온 데이터를 메모리에 올려서 쓰게 되는데, public class가 달라져버려 new로는 공유 데이터를 접근하지 못한다. 따라서 사용자의 객체 생성을 생성자에 pricava예약어로 막고, 프로그..