이 기사는 클래식 인터뷰 서면 시험 질문과 참조 답변을 알려줍니다. 다음과 같이 참조에 대해 공유하십시오.
1. 최대 절전 모드는 어떻게 작동하고 왜 사용해야합니까?
원칙:
1. 구성 파일을 읽고 구문 분석합니다
2. 매핑 정보를 읽고 구문 분석하고 세션을 만듭니다.
3. 열린 세션
4. 트랜잭션 전환을 만듭니다
5. 지속성 작동
6. 거래를 제출하십시오
7. 세션 닫기
8. sesstionfactory를 닫습니다
왜 사용 :
①. JDBC 액세스 데이터베이스에 대한 코드가 캡슐화되어 데이터 액세스 계층의 번거로운 반복 코드를 크게 단순화합니다.
②. Hibernate는 JDBC를 기반으로 한 주류 지속성 프레임 워크이며 우수한 ORM 구현입니다. DAO 레이어의 코딩 작업을 크게 단순화합니다.
③. Hibernate는 투명성을 달성하기 위해 바이트 코드 향상 프로그램보다는 Java 반사 메커니즘을 사용합니다.
④. 최대 절전 모드는 경량 프레임 워크이기 때문에 매우 잘 작동합니다. 매핑의 유연성이 우수합니다. 다양한 관계형 데이터베이스를 1 ~ 하나에서 많은 복잡한 관계로 지원합니다.
2. 최대 절전 모드는 어떻게 지연됩니까?
①. Hibernate2 지연 로딩 구현 : a) 엔티티 객체 B) 수집 (수집)
②. Hibernate3은 속성의 지연된 하중 기능을 제공합니다. 최대 절전 모드 데이터 데이터를 쿼리하면 데이터가 존재하지 않으며 메모리가 없습니다. 프로그램이 데이터에서 실제로 작동하면 객체가 존재하며 메모리가 지연된 하중을 실현합니다. 서버의 메모리 오버 헤드를 저장하여 서버의 성능을 향상시킵니다.
3. 최대 절전 모드에서 수업 간의 관계를 구현하는 방법은 무엇입니까? (예 : 일대일, 다수의 관계와 같은)
수업 간의 관계는 주로 표 사이의 관계에 반영됩니다. 그들은 도시의 물건에서 작동합니다. 우리의 프로그램은 모든 테이블과 클래스를 함께 매핑하며 구성 파일에서 다수, 일대일, 다수 및 다수를 통과합니다.
4. Hibernate의 캐시 메커니즘에 대해 이야기합시다
①. 내부 캐시는 Application 레벨 캐시에 속하는 Hibernate에서 1 단계 캐시라고도합니다.
②. 레벨 2 캐시 :
a) 응용 프로그램 및 캐시
b) 분산 캐시 조건 : 데이터를 제 3자가 수정하지 않으며, 데이터 크기는 허용 가능한 범위 내에 있고, 데이터 업데이트 주파수는 낮으며, 시스템에서 동일한 데이터가 자주 사용되며 비 임계 데이터가 자주 사용됩니다.
c) 타사 캐시의 구현
5. 최대 절전 모드 쿼리 방법
SQL, 기준, 객체 계산
HQL :
1. 속성 쿼리
2. 매개 변수 쿼리, 매개 변수 쿼리
3. 관련 쿼리
4. Pagination Query
5. 통계 기능
6. 최대 절전 모드를 최적화하는 방법?
①. 일대일 일대일이 아닌 양방향 일대일 협회를 사용하십시오. 유연하게 일대일 일대일 협회를 사용하십시오. 일대일을 사용하지 말고 대신 다중 하나를 사용하십시오. 객체 캐시를 구성하고 세트 캐시를 사용하지 마십시오. 일대일 컬렉션에는 가방을 사용하고 다수의 컬렉션에 세트를 사용하십시오.
⑥. 상속 클래스에서 명시 적 다형성을 사용하십시오. 테이블 필드가 적고 많은 테이블 연관성을 두려워하지 않아야합니다. 지원하기위한 보조 캐시가 있습니다.
7. 스트럿 작업 메커니즘? 왜 스트럿을 사용합니까?
작업 메커니즘 :
Struts 'Workflow :
초기화 ActionServlet은 웹 응용 프로그램이 시작되면로드됩니다. ActionServlet은로드됩니다
struts-config.xml 파일에서 구성 정보를 읽고 다양한 구성 객체에 저장하십시오.
ActionServlet이 클라이언트 요청을 받으면 다음 프로세스가 실행됩니다.
-(1) 사용자 요청과 일치하는 조치 매핑 인스턴스를 검색합니다. 존재하지 않으면 요청 경로가 잘못된 정보를 반환합니다.
-(2) ActionForm 인스턴스가 존재하지 않으면 ActionForm 객체를 작성하고 클라이언트가 제출 한 양식 데이터를 ActionForm 객체에 저장하십시오.
-(3) 구성 정보에 따라 양식 검증이 필요한지 여부를 결정합니다. 확인이 필요한 경우 actionform의 validate () 메소드를 호출하십시오.
-(4) validate () Action of ActionForm이 NULL을 반환하거나 ActionMessage를 포함하지 않는 ActUiberrors 객체를 반환하는 경우 양식 검증이 성공했음을 의미합니다.
-(5) ActionServlet은 ActionMapping에 포함 된 매핑 정보를 기반으로 요청을 전달할 작업을 결정합니다. 해당 조치 인스턴스가 존재하지 않으면 먼저이 인스턴스를 작성한 다음 action의 execute () 메소드를 호출하십시오.
-(6) action의 execute () 메소드는 actionforward 객체를 반환하고 ActionServlet은 클라이언트 요청을 ActionForward 개체에 의해 가리키는 JSP 구성 요소로 전달합니다.
-(7) ActionForward 객체는 JSP 구성 요소를 가리키하여 동적 웹 페이지를 생성하고 클라이언트로 반환합니다.
왜 사용 :
JSP, Servlet 및 Javabean Technologies의 출현은 강력한 엔터프라이즈 애플리케이션 시스템을 구축 할 수있는 가능성을 제공합니다. 그러나 이러한 기술로 구축 된 시스템은 매우 혼란 스럽기 때문에이 외에도 이러한 기술을 구성하는 규칙과 규칙이 필요합니다. 이것이 프레임 워크이며 스트럿이 생겨났습니다.
Struts를 기반으로 개발 된 응용 프로그램은 컨트롤러 구성 요소, 모델 구성 요소 및 뷰 구성 요소의 세 가지 유형의 구성 요소로 구성됩니다.
8. Struts의 Validate Framework는 어떻게 검증됩니까?
Struts 구성 파일에서 특정 오류 프롬프트를 구성한 다음 Formbean에서 validate () 메소드를 호출하십시오.
9. Struts의 디자인 패턴에 대해 이야기합시다
MVC 모드 : 웹 응용 프로그램이 시작될 때 ActionServler가로드되고 초기화됩니다. 사용자가 양식을 제출하면 구성된 ActionForm 객체가 생성되어 양식의 해당 데이터로 채워집니다. ActionServler는 struts-config.xml 파일로 구성된 설정을 기반으로 양식 검증이 필요한지 여부를 결정합니다. 필요한 경우 ActionForm의 validate () 확인을 호출하고 요청을 보낼 작업을 선택하십시오. 작업이 존재하지 않으면 ActionServlet은 먼저이 개체를 작성한 다음 Action의 Execute () 메소드를 호출합니다. execute ()는 actionform 객체에서 데이터를 얻고 비즈니스 로직을 완료하며 actionforward 객체를 반환합니다. ActionServlet은 클라이언트 요청을 ActionForward 객체로 지정된 JSP 구성 요소로 전달합니다. ActionForward 객체로 지정된 JSP는 동적 웹 페이지를 생성하여 클라이언트로 반환합니다.
10. 스프링 작업 메커니즘 및 그 이유는 무엇입니까?
Spring MVC는 모든 요청을 DispatcherServlet에 제출하여 응용 프로그램 시스템의 다른 모듈을 맡겨 요청의 실제 처리를 담당합니다.
dispatcherServlet가 하나 이상의 핸드 레이핑을 쿼리하고 요청을 처리하는 컨트롤러를 찾습니다.
dispatcherServlet 대상 컨트롤러에 요청을 제출하십시오
④. 컨트롤러가 비즈니스 로직 처리를 수행하면 ModelAndView를 반환합니다.
dispathcher querys 하나 이상의 ViewResolver view resolver를 쿼리하고 ModelAndView 객체에 의해 지정된 뷰 객체를 찾습니다. View Object는 클라이언트로 렌더링하고 반환 할 책임이 있습니다.
왜 사용 :
{AOP를 사용하면 개발자가 교차 절단 문제라고하는 비 행동 문제를 만들고 응용 프로그램 코드에 삽입 할 수 있습니다. AOP를 사용한 후 공공 서비스 (예 : 로그, 지속성, 트랜잭션 등)는 도메인 객체의 객체 모델의 복잡성을 증가시키지 않으면서도 측면으로 분해되고 도메인 객체에 적용될 수 있습니다.
IOC를 사용하면 객체를 구성 할 수있는 응용 프로그램 환경을 생성 한 다음 해당 객체에 공동 객체를 전달합니다. 역전이라는 단어에서 알 수 있듯이 IOC는 역 JNDI와 같습니다. 추상 공장, 서비스 로케이터, 싱글 톤 및 직선 구조를 사용하지 않고 각 객체는 공동 사물로 구성됩니다. 따라서 공동 작업자는 컨테이너가 관리합니다.
Spring은 AOP 프레임 워크 인 경우에도 IOC 컨테이너입니다. 스프링의 가장 좋은 점은 물체를 교체하는 데 도움이된다는 것입니다. Spring을 사용하면 Javabean 속성 및 구성 파일을 사용하여 종속성 (협업 객체) 만 추가하십시오. 그런 다음 비슷한 인터페이스를 가진 협업 객체를 필요할 때 쉽게 교체 할 수 있습니다. }
Spring Framework는 7 개의 잘 정의 된 모듈로 구성된 계층 구조입니다. 스프링 모듈은 콩 생성, 구성 및 관리 방법을 정의하는 코어 컨테이너 위에 구축됩니다.
스프링 프레임 워크를 구성하는 각 모듈 (또는 구성 요소)은 단독으로 존재하거나 하나 이상의 다른 모듈과 함께 구현 될 수 있습니다. 각 모듈의 기능은 다음과 같습니다.
Core Core Container : Core Container는 Spring Framework의 기본 기능을 제공합니다. 코어 컨테이너의 주요 구성 요소는 공장 패턴의 구현입니다. BeanFactory는 IOC (Control) 모드의 반전을 사용하여 응용 프로그램의 구성 및 종속성 사양을 실제 애플리케이션 코드에서 분리합니다.
Spring Context : Spring Context는 스프링 프레임 워크에 컨텍스트 정보를 제공하는 구성 파일입니다. Spring Context에는 JNDI, EJB, 이메일, 국제화, 체크섬 스케줄링 기능과 같은 엔터프라이즈 서비스가 포함됩니다.
Spring AOP : 구성 관리 기능을 통해 Spring AOP 모듈은 Spring Framework에 측면 지향 프로그래밍 기능을 직접 통합합니다. 따라서 Spring Framework 지원 AOP에서 관리하는 객체를 쉽게 만들 수 있습니다. Spring Aopoldule은 스프링 기반 응용 프로그램의 객체에 대한 트랜잭션 관리 서비스를 제공합니다. Spring AOP를 사용하면 선언 트랜잭션 관리를 EJB 구성 요소에 의존하지 않고 응용 프로그램에 통합 할 수 있습니다.
SPRING DAO : JDBC DAO 추상화 계층은 다른 데이터베이스 공급 업체가 던진 예외 처리 및 오류 메시지를 관리하는 데 사용할 수있는 의미있는 예외 계층을 제공합니다. 예외 계층은 오류 처리를 단순화하고 작성 해야하는 예외 코드의 양을 크게 줄입니다 (예 : 개방 및 폐쇄 연결). Spring Dao의 JDBC 지향 예외는 일반적인 DAO 예외 계층을 따릅니다.
Spring ORM : Spring Framework는 여러 ORM 프레임 워크를 삽입하여 JDO, Hibernate 및 Ibatis SQL 맵을 포함한 ORM 객체 관계 도구를 제공합니다. 이 모든 것은 Spring의 공통 거래 및 DAO 예외 계층을 따릅니다.
Spring Web Module : 웹 컨텍스트 모듈은 응용 프로그램 컨텍스트 모듈을 기반으로하며 웹 기반 애플리케이션에 컨텍스트를 제공합니다. 따라서 스프링 프레임 워크는 자카르타 스트럿과의 통합을 지원합니다. 웹 모듈은 또한 다중 부분 요청 및 바인딩 요청 매개 변수를 도메인 객체에 처리하는 작업을 단순화합니다.
Spring Spring MVC 프레임 워크 : MVC 프레임 워크는 웹 애플리케이션을 구축하기위한 완벽하게 작동하는 MVC 구현입니다. 정책 인터페이스를 통해 MVC 프레임 워크는 구성 가능성이 높아지고 MVC는 JSP, Velocity, Tiles, ITEXT 및 POI를 포함한 많은 뷰 기술이 있습니다.
Spring Framework의 기능은 모든 J2EE 서버에서 사용할 수 있으며 대부분은 관리되지 않는 환경에 적합합니다. 스프링의 핵심 지점은 다음과 같습니다. 특정 J2EE 서비스에 구속되지 않은 재사용 가능한 비즈니스 및 데이터 액세스 개체에 대한 지원. 이러한 객체가 다른 J2EE 환경 (웹 또는 EJB), 독립형 응용 프로그램, 테스트 환경 사이에서 재사용 될 수 있다는 것은 의심의 여지가 없습니다.
IOC 및 AOP
역전 패턴을 제어하는 기본 개념 (종속성 개입이라고도 함)은 객체를 생성하는 것이 아니라 생성 방법을 설명하는 것입니다. 코드의 객체 및 서비스에 직접 연결되지는 않지만 구성 파일의 서비스가 필요한 구성 요소를 설명합니다. 컨테이너 (스프링 프레임 워크의 IOC 컨테이너)는 이들과 연결을 담당합니다.
일반적인 IOC 시나리오에서 컨테이너는 모든 객체를 생성하고 메소드가 호출되는시기를 결정하여 함께 연결하는 데 필요한 속성을 설정합니다. 다음 표는 IOC의 구현 패턴을 나열합니다.
Spring Framework의 IOC 컨테이너는 Type 2 및 Type 3을 사용하여 구현됩니다.
측면 지향 프로그래밍
APER-OUNIED 프로그래밍 인 AOP는 프로그래머가 우려를 교차 절단하거나 전형적인 분할 책임 라인 (예 : 로깅 및 거래 관리)을 교차 절단하는 동작을 모듈화 할 수있는 프로그래밍 기술입니다. AOP의 핵심 구성은 측면으로, 여러 클래스에 영향을 미치는 동작을 재사용 가능한 모듈로 캡슐화합니다.
AOP와 IOC는 보완 기술이며, 둘 다 모듈 식 접근법을 사용하여 엔터프라이즈 애플리케이션 개발에서 복잡한 문제를 해결합니다. 일반적인 객체 지향 개발에서 로깅 기능을 구현하기 위해 모든 방법과 Java 클래스에 배치해야 할 수도 있습니다. AOP 접근 방식에서 로그 서비스는 차례로 모듈화되고 로그가 필요한 구성 요소에 선언적으로 적용될 수 있습니다. 물론, 장점은 Java 클래스가 로그 서비스의 존재를 알 필요가 없으며 관련 코드를 고려할 필요가 없다는 것입니다. 따라서 Spring AOP에 작성된 응용 프로그램 코드는 느슨하게 결합됩니다.
AOP의 기능은 스프링 트랜잭션 관리, 로깅 및 기타 다양한 기능의 맥락에 완전히 통합됩니다.
IOC 컨테이너
Spring의 디자인의 핵심에는 Javabean 구성 요소와 함께 사용되도록 설계된 Org.springframework.beans 패키지가 있습니다. 이 패키지는 일반적으로 사용자가 직접 사용하지 않고 서버가이를 대부분의 다른 기능의 기본 중개자로 사용하는 서버에서 사용합니다. 다음으로 가장 진보 된 추상화는 BeanFactory 인터페이스입니다.이 인터페이스는 객체를 이름으로 작성하고 검색 할 수있는 공장 설계 패턴을 구현 한 BeanFactory 인터페이스입니다. BeanFactory는 객체 간의 관계를 관리 할 수도 있습니다.
BeanFactory는 두 개의 객체 모델을 지원합니다.
□ 싱글 톤 모델은 쿼리 할 때 검색 할 수있는 특정 이름을 공유 한 객체 인스턴스를 제공합니다. 싱글 톤은 기본이자 가장 일반적으로 사용되는 객체 모델입니다. 상태가없는 서비스 개체에 이상적입니다.
□ 프로토 타입 모델을 통해 별도의 객체가 검색 될 때마다 생성 될 수 있습니다. 프로토 타입은 각 사용자가 고유 한 객체를 필요로 할 때 가장 적합합니다.
Bean Factory의 개념은 IOC 컨테이너로서의 스프링의 기초입니다. IOC는 애플리케이션 코드에서 프레임 워크로 처리 할 책임이 있습니다. 다음 예에서 알 수 있듯이 Spring Framework는 Javabean 속성 및 구성 데이터를 사용하여 설정 해야하는 종속성을 나타냅니다.
Beanfactory 인터페이스
org.springframework.beans.factory.beanfactory는 간단한 인터페이스이므로 다양한 기본 저장 방법에 대해 구현할 수 있습니다. 가장 일반적으로 사용되는 BeanFactory 정의는 XMLBeanFactory입니다. Listing 1에 표시된 것처럼 XML 파일의 정의에 따라 Bean을로드합니다.
목록 1. XMLBEANFACTORY
beanfactory factory = new xmlbeanFactory (new FileInputSteam ( "myBean.xml"));
XML 파일에 정의 된 콩은 부정적으로로드되므로 콩 자체가 필요할 때까지 초기화되지 않습니다. BeanFactory에서 콩을 검색하려면 getBean () 메소드를 호출하고 목록 2와 같이 검색 할 콩 이름으로 전달하십시오.
Listing 2. GetBean ()
Mybean Mybean = (Mybean) factory.getbean ( "Mybean");
각 콩의 정의는 pojo (클래스 이름 및 Javabean 초기화 속성으로 정의 됨) 또는 공장의 정의 일 수 있습니다. FactoryBean 인터페이스는 스프링 프레임 워크를 사용하여 구축 된 응용 프로그램에 간접 수준을 추가합니다.
IOC 예
제어 역전을 이해하는 가장 쉬운 방법은 실제 응용 프로그램을 보는 것입니다. 3 부 스프링 시리즈의 1 부를 요약하면서 스프링 IOC 컨테이너를 통해 응용 프로그램의 종속성을 주입하는 방법을 보여주는 예제를 사용했습니다.
온라인 신용 계정을 시작하는 사용 사례를 시작점으로 사용합니다. 이 구현의 경우 신용 계정을 활성화하려면 사용자가 다음 서비스와 상호 작용해야합니다.
☆ 신용 수준 평가 서비스, 쿼리 사용자의 신용 기록 정보.
☆ 원격 정보 링크 서비스, 고객 정보 삽입, 고객 정보를 신용 카드 및 자동 차변을 위해 은행 정보로 연결하십시오 (필요한 경우).
☆ 이메일 서비스, 신용 카드 상태에 대한 사용자 이메일 보내기.
3 개의 인터페이스
이 예에서는 서비스가 이미 존재한다고 가정하며 이상적으로는이를 느슨하게 연결된 방식으로 통합하는 것입니다. 다음 목록은 세 서비스에 대한 응용 프로그램 프로그램 인터페이스를 보여줍니다.
Listing 3. CreditRatingInterface
Public Interface CreditRatingInterface {public boolean getUsercredithistoryInformation (iCustomer iCustomer);}Listing 3에 표시된 신용 수준 평가 인터페이스는 신용 기록 정보를 제공합니다. 고객 정보가 포함 된 고객 객체가 필요합니다. 이 인터페이스의 구현은 신용 처리 클래스에서 제공합니다.
Listing 4. CreditLinkingInterface
공개 인터페이스 CreditLinkingInterface {public string geturl (); public void seturl (String URL); public void linkcreditbankaccount ()는 예외를 겪습니다;}신용 링크 인터페이스는 신용 기록 정보를 은행 정보 (필요한 경우)와 연결하고 사용자의 신용 카드 정보를 삽입합니다. 신용 링크 인터페이스는 원격 서비스이며 쿼리는 geturl () 메소드를 통해 수행됩니다. URL은 Spring Framework의 Bean 구성 메커니즘에 의해 설정되며 나중에 논의 할 것입니다. 이 인터페이스의 구현은 CreditLinking 클래스에서 제공합니다.
Listing 5. emailinterface
public interface emailinterface {public void sendemail (iCustomer iCustomer); public string getfromemail (); public void setfromemail (string fromEmail); public string getpassword (); public void setpassword (String password); public string getSmtphost (); public void setsmtphost (string stphost); public void getUserid ();이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.