Development/Java (72) 썸네일형 리스트형 [JPA]Persistence Context Persistence Context 특징- 1차 캐시- 동일성 보장- 트랜잭션을 지원하는 쓰기 지연 (transaction write-behind)- 변경감지(dirty checking)- 지연로딩 조회- 조회시에 1차캐시에서 식별자 값으로 entity 조회. 없으면 DB에서 조회 등록- persist 를 실행하면 1차 캐시에 저장 되고 transaction writer-behind에 쿼리를 저장해둔다.- commit 시점에 transaction writer-behind에 있는 쿼리를 실행함. 수정 - 1차 캐시에 Entity가 저장될 시점에 최초상태의 스냅샷을 같이 저장한다. - transaction writer-behind 에서 flush 시점에 스냅샷과 entity를 비교해서 변경된 entity를 .. [JPA]Entity 생명주기 1. new/transient : persistence context와 무관2. managed : persistence context에 저장된 상태3. detached : persistence context에 저장되었다가 분리된 상태4. removed : 삭제된 상태 Mybatis 동적쿼리 사용시 NuberFormatException:For input String 해결방법 Mybatis에서 동적 쿼리 사용시 아래와 같이 비교구문을 작성하게 되면 NuberFormatException이 발생한다. 이유는 'Y'를 문자열이 아닌 문자(Char)형태로 인식해서 숫자로 인식하기 때문이다. -_-; 해결방법은 아래 처럼 표기해주면 된다. 1. 쌍따옴표와 홑따옴표 위치 변경2. 쌍따옴표를 HTML 코드로 변경 3. toString() 함수를 사용해서 String형으로 변환 util.Date vs sql.Date 차이 쓰다보면 별 생각없이 사용했던 Date 클래스. 심지어 util.Date 인지 sql.Date인지도 생각도 안하고 썼는데.. (있는지도 잘 몰랐네 -_-) 그런데 이런 차이점이 있었다.. 일단 sql 패키지의 Date 클래스는 java.util.Date 클래스를 상속 받는다. 그런데.. 문제는 이게 값을 가져올때이다. 오버라이딩한 toString을 찾아보면 public String toString () { int year = super.getYear() + 1900; int month = super.getMonth() + 1; int day = super.getDate(); char buf[] = "2000-00-00".toCharArray(); buf[0] = Character.forDigit(year.. JSP 용량초과? 65535 bytes limit 개발을 하다가 갑자기 특정 페이지에 들어가는데 이클립스 로그창에 이런 메세지가 나오더니 페이지 에러가 났다. -_-;The code of method _jspService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) is exceeding the 65535 bytes limit 구글링을 해보니 JVM의 Method Size 는 64K로 제한이 된다고 글들이 써있었다.일단 해결 방법은 서버에 있는 web.xml에 아래와 같이 설정해주면 된다. jsp org.apache.jasper.servlet.JspServlet mappedfile false JVM spec : Limitations of the Java Vi.. Reflection 활용한 값 비교 가끔 DB에 입력할 값하고 기존에 있던 값하고 비교해야 할 상황이 생긴다. 그럴때마다 객체에 있는 수많은 getter 메소드를 소스 코드에 써줘야 한다면 코드가 참 지저분할것 같다. 그래서 사용한 방법이 Reflection 이다. Class에 있는 정보를 읽어와서 실제로 메소드까지 실행 가능하니.. 라인수를 확 줄일 수 있다. ^^import java.lang.reflect.Method;public class ReflectionTest { public static void main(String[] args) throws Exception { // DB에 입력하려는 DATA TestVO test = new TestVO(); test.setId("test"); test.setName("kim"); test... Integer.paserInt 를 사용한 진법 변환 Integer.parseInt를 많이 써왔었지만 문자를 정수로 바꾼다라는 것 밖에 몰랐었다. 그런데 이 함수가 다른 기능도 있었다. 바로 진법 변환.@Testpublic void integerTest(){ String number1 = "1010"; String number2 = "10"; Assert.assertEquals(10, Integer.parseInt(number1, 2)); Assert.assertEquals(8, Integer.parseInt(number2, 8));}위 테스트 코드를 실행하면 정상적으로 실행이 된다. 첫번째는 1010을 2진법 수로 인식해서 결과값을 10을 리턴했고 두번째는 10을 8진법 수로 인식해서 결과값을 8로 리턴했다. 진법 변환하는것을 코드로 짜면 귀찮았는데 In.. Null Object 사용 ...객체를 상속받는 null 객체를 만들고null일 경우 get method에 대한 처리 해줌 Singleton Pattern Singleton Pattern : 해당 클래스의 객체가 하나만 만들어지고 어디서든지 그 객체에 접근할수 있도록 한다. (출처 : http://www.phpbuilder.com/columns/Singleton-PHP5/Octavia_Anghel112310.php3)구현 방법은 간단하다.public class Singleton { private static Singleton singleton; private Singleton(){}; public static Singleton getInstance(){ if (singleton == null){ singleton = new Singleton(); } return singleton; }}그런데 위와 같은 방법은 문제가 있다.멀티 쓰레드 상에서 if문을 여러 .. List 를 Array로 바꾸는 함수. Arrays.asList(array);이렇게 하면 array를 List로 변환해 준다.나름 유용할듯. ^^이것 이외에도 sort도 사용할수 있다.Arrays.sort(array)배열 정렬시킬때 잘 써먹을듯 하다. 이전 1 2 3 4 5 6 7 8 다음