본문 바로가기

웹 프로그래밍/Spring Framework

(22)
[Hibernate / JPA ] LazyLoading | No Session 에러에 대해서 "No Session 에러는 개발자의 실수!" 보통 하이버네이트/JPA 기반의 프로젝트에서 주로 발생하는 에러는 No Session에러이다. 해당 에러는 영속성(편하게 말하자면 영혼을 가진, 데이터베이스와 바인딩 된 등으로 이해하면 편하다.)을 가진 객체(인스턴스)가 프로젝트의 트랜잭션 범위를 벗어나 추가적인 Lazy 로딩을 걸 때, DB와 연결된 Connection이 없어서 나는 에러이다(정확히는 커넥션이 없기보다. 이미 커넥션에 커밋을 날리고 트랜젝션이 닫힌 상태를 의미). 따라서 해당 에러를 처리하기 위해 아래 방법들이 있다. 1. 아키텍쳐에게 트랜잭션이 걸린 범위를 질의하여 해당 프로젝트 정책에 맞게 개발한다. (필수) 2. 화면에 전달되는 객체중 Lazy Proxy를 가지고 있는 객체를 Null..
[SpringMVC] @ModelAttribute @RequestBody 에 대해서. 이슈Spring MVc에서 파라미터 앞에 @ModelAttribute와 @RequestBody를 쓰는 코드들이 많다. 하지만 바인딩이 안되는 경우 에러를 찾지 못하는 난감한 경우가 있는데 이런 경우에 대한 명확한 해답을 아래 제시한다. 설명Client에서 Server로 Ajax call을 날렸다. 분명히 날렸음에도 인자값은 전달되지않고 Null Pointer Exception을 발생시켜버린다. 이유가 무엇일까? 1. GET/POST 등은 각각의 다른 방식으로 데이터를 서버로 전송한다. GET/POST는 프로토콜 차이로 인해서 각각의 다른 데이터 방식의 데이터를 담아 전송한다. 중요한건 GET방식은 URL에 데이터를 담아 전송하며 1차원 데이터밖에 담지 못한다(2차원 배열, 객체속 객체 등등은 불가능하다...
[Spring / API ] SearchResults 기 JPAQuery로 query를 작성하여 getResults()로 결과 값들을 가져올 땐 SearchResults 클래스로 반환한다. 자세한건 아래에! SearchResults 클래스는 메타데이타 검색의 결과를 나타낸다.결과는 많은 수의 아이템들을 포함할 수도 있기 때문에, 어플리케이션은 결과 셋에 대해 'window'를 필요로 한다. 이 때의 'window'는 SQL에서의 OFFSET과 LIMIT 문의 기능과 비슷하다. 결과 셋은 getResults() 메소드가 호출되었을 때에만 유효하다. 만약 getResults() 메소드가 호출되지 않았다면 결과 셋은 비어있게 된다. SearchResults 객체에 정의된 프로퍼티들과 메소드들은 배열로 나타낼 수도 있다. 그래서 이 배열에 있는 결과를 접근할 수 ..
Spring Project Defualt POM.XML (Dependency) 4.0.0WebSocketsWebSockets0.0.1-SNAPSHOTwar4.1.7.RELEASE3.1.04.3.0.Final1.6.12.6.0UTF-8 spring-maven-releaseSpring Maven Release Repositoryhttp://maven.springframework.org/releasespring-maven-milestoneSpring Maven Milestone Repositoryhttp://maven.springframework.org/milestone spring-maven-releaseSpring Maven Release Repositoryhttp://maven.springframework.org/releasespring-maven-milestoneSpring Ma..
[Spring] 왜 LAS에 Biz패키지가 있는 걸까? Biz Package 진짜 왜 있는거지? @Component로 빈으로 생성하고 DAO(Repository)를 쓰면 되지 않을 까라는 생각을 해본다. 해봐야징 2015.11.06 추가 ㅋㅋ Service layer:Publishes the Service Endpoint (this could be your MVC web page, or a WCF endpoint)Does a security checkMaps data from contract data transfer objects to business objectsCalls functionality in the business layerBusiness layerContains business logicAccesses the data layer (this co..
[Spring Framework] Annotation Annotation 사용시 Bean.xml에 Context Namespace 필요하다. 따라서 bean -> xmls:context ~ 를 추가해주면된다. 또한 표준 어노테이션을 사용하려면 해당 어노테이션이 정의되어 있는 JAR파일을 불러와야하는데 이 같은 경우 pom.xml ( Maven 기준 ), 에 아래 Dependency를 추가해주면된다. 컴포넌트를 제외한 어노테이션만 쓸 경우 : 컴포넌트를 포함한 어노테이션을 쓸 경우 : JSR-330 javax.inject javax.inject 1 JSR-250 javax.annotation jsr250-api 1.0 Annotation의존성 주입@Autowired : Spring @Inject : JSR-330 @Resource : JSR-250해당 빈이 ..
[Spring Framework] Repository DI Solution 1. 생성시 생성자인자를 사용한 방법 2. 생성 후 Getter/Setter을 이용한 방법 @Annotation을 이용한 방법
[Spring]스프링 3.1 라이브러리 다운로드 [Maven을 사용하지 않고!] 스프링다운로드일단 스프링 홈페이지에서 Maven이나 프로젝트 관리도구로 받으라고 "강요"하며 따로 다운로드 링크를 주지 않기에 보안이 강력한 업무사이트에서는 Maven에서 자동적으로 받아오는 스프링 파일조차도 막아 놓기떄문에 아래 해당 링크를 통해 받아 학습해야한다. 다운로드 링크