본문 바로가기

Development/Web & Server

[Spring Framework] property 파일 여러개를 로딩하기 아래와 같이 리스트에 파일 경로를 넣어서 관리하면 된다. file:src/main/webapp/WEB-INF/property/spring.properties file:src/main/webapp/WEB-INF/property/db.properties 더보기
[Hibernate] Criteria로 List를 가져올때 중복되는 값이 있다면... List를 가져오는데 중복되는 값을 가져온다면... 아래의 코드를 입력해주자~! critera.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); 주의 사항critera.setMaxResults() 함수와 같이 사용하는 경우에 MaxResult 만큼 가져온 후에 중복값을 제거하는 듯하다. 그래서 제대로 동작하지 못하기에HQL로 작성해서 사용하는 것이 더 좋다. 더보기
[Spring Framework] Email 발송하기~! 1. Pom 파일 javax.mail mail 1.4org.apache.velocityvelocity1.7 2. Setting 설정하기 smtp true true true resource.loader=class class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader 3. 소스코드 @Inject private JavaMailSender mailSender; @Inject private VelocityEngine velocityEngine; final MimeMessagePreparator preparator = new MimeMessagePreparator() {@Overridepublic .. 더보기
[Amazon] RDS character set utf-8 로 세팅하기 1. 우선 아마존의 RDS 접속 그리고 DB Parameter group을 생성하자~! 2. 생성후 paramter를 아래와 같이 변경한다. 3. DB Instance에서 오른쪽 키를 누르면 Modify를 볼수 있다. 4. Character를 utf8로 변경한다. 더보기
[Amazon] EC2 서버 간단 생성기 EC2 Instance를 생성해보자~!1. 파란 버튼을 누르자~!! 2. 서버의 OS 사양을 선택~!! 3. 하드웨어 사양 선택~! 4. 2단계에서 바로 6단게로 왔다. (별로 중요한 내용은 아니라서 본인은 그냥 넘어감... 하지만 상황에 따라 필요할 수도 있으니 한번 살펴볼 것!) 보안 그룹을 정한다. 이건 나중에 바꾸기가 불가능하기 때문에 신중하게 정하자 (보안 그룹으로 정해서 포트를 관리하는 것이다.) 5. 자 이제 마지막 단계이다. 마지막으로 확인하자~! 6. 서버에 마지막으로 서버에 접근할 pem 파일을 만들거나 기존에 만든 키로 하고 싶다면 선택하면 된다. 더보기
[Hibernate] 2차 캐시 내장 동시성 전략 1. Transactional - 관리형 환경에서만 이용 가능하며, 필요한 경우 '반복 가능한 읽기'까지의 트랜잭션 격리 수준을 완전하게 보장한다. 주로 읽기만 하는(갱신은 거의 일어나지 않는)데이터에 이 전략을 사용한다. 2. Read-Write - 타임스탬프 메커니즘을 사용해'커밋된 읽기' 격리 수준을 유지하며, 클러스터 환경이 아닌 곳에서만 이용할 수 있다. 마찬가지로 주로 읽기만 하는(갱신은 거의 일어나지 않는)데이터에 이 전략을 사용한다. 3. Nonstrict-Read-Write - 캐시와 데이터베이스 간의 일관성을 보장하지 않는다. 동일한 엔티티에 동시에 접근할 가능성이 있다면 타임아웃 만료를 가능한 짧게 구성해야 한다. 그렇지 않으면 캐시에서 스테일 데이터를 읽어올지도 모른다. 스테일 데이.. 더보기
[Amazon] RDS 서버 생성 및 연결하기~! 1. RDS 콘솔 페이지에 가서 launch DB Instance를 누른다. 2. 사용할 DB 엔진 선 택 3. 여러가지 과정이 있지만 주요한 것만 설명하겠습니다. 아래의 항목에서 DB 이름이랑 user, password를 입력합니다. 4. DB Security Group을 default로 선택 만약 따로 적용하고 싶다면 생성하기 전에 그룹을 따로 생성해서 사용하세요~! 5. 그리고 생성하고 나면 한 20분 정도 기다리고 자세히 보기를 하면 EndPoint라는 항목에 주소가 뜬다. 6. 개발 장비에서 DB에 접속하기 위해 보안사항을 설정하자 본인은 default로 선택하고 자세히 항목을 누르면.. 7. CIDR/IP 항목으로 CIDR에 IP를 입력한다. 보기 좋게 밑에 IP가 나와서 그대로 입력하면 된다.. 더보기
[JavaScript] 최근 인기를 얻고 있는 JavaScript 라이브러리 정리 라이브러리를 참고하기에 좋은것 같아서.... http://html5experts.kr/archives/2039 더보기
[Hibernate] 원하는 값만 가져오기~! DB의 구조를 잘못 잡아서 그럴수도 있지만... 본인의 경우 부모와 자식 관계?? 를 가진 관계에서 서로를 가져야하는 경우가 생겼다. 그래서 그냥 실행할경우 무한정 반복하다가 Overflow라는 오류로 죽게 되어... 부모가 자식을 가져오는 경우에는 자식이 부모를 가져올수 없게 다양한 시도를 했지만.. 실패를 하고 부모를 안가져오는 함수와 AOP로.... 대체하였다... 그래서 원하는 값만 가져오는 것이 필요하였다. 방법은 다음과 같다. final Criteria crit = this.mSessionFactory.getCurrentSession().createCriteria(클래스.class);final ProjectionList projectionList = Projections.projectionLi.. 더보기
[Hibernate] update 와 merge 차이점 update 의 사용방법this.mSessionFactory.getCurrentSession().update(object);object.set~~~~~~~ merge 의 사용방법object.set~~~~~~this.mSessionFactory.getCurrentSession().merge(object); 2개의 차이점을 보면 이미 영속성(Persistent)상태이면 상황에따라 update가 되지만 그렇지 않을경우 update 함수를 통해서 영속성 상태를 가지게 만들고 그 상태에서 수정을 해야 DB에 update가 적용이 됩니다. 하지만 merge의 경우 영속성이 아닌 객체 예를들면 다른 곳에서 전달받은 객체를 DB에 적용하고 싶을때 사용하면 적합히지 않을까 생각이 됩니다. merge의 경우 id가 없는 .. 더보기