레거시 JAVA 스타일

송용준·2025년 2월 26일

최신 스프링 특징
1. 객체생성을 @Autowired를 통해 자동 관리(의존성 주입)
2. ResponseEntity 사용으로 JSON 응답
3. @RequestBody 사용하여 JSON 데이터 자동 변환

context.xml에 안쓰고 application.yml에 쓰겠지아마?

하지만 회사에서 스프링을 안쓰고 JSP/서블릿 타입의 레거시한 자바 스타일을 갖고 있을수 있다.

public class HrMakeFileAction extends AbstractAction {
    public void makeTaxFile(BusinessContext ctx) throws Exception {
        HrMakeFileInf hrMakeFileService = (HrMakeFileInf) ServiceManagerFactory.getService("HrMakeFileService");
        DataSet dsInput = (DataSet) ctx.getInputObject("ds_FileInput");
        
        // 서비스 호출하여 파일 생성 및 결과 받기
        DataSet dsResult = hrMakeFileService.makeTaxFile(dsInput);
        ctx.addOutput("ds_Result", dsResult);
        
        // dsResult에서 dsDetail20을 추출하여 사용할 수 있음
        DataSet dsDetail20 = dsResult.getDataSet("dsDetail20");
        ctx.addOutput("dsDetail20", dsDetail20);
    }
}

이런식으로 컨트롤 만들어놓고 구현체를 만듬

...
DataSet dsDetail20 = new DataSet();
...
 con = getConnection();
	            SqlExecutor db = SqlMapFactoryHelper.makeSqlExecutor(con,SqlMapFactoryHelper.NEXACRO17);      
	            SqlRequest sql = SqlMapFactoryHelper.makeSqlRequest(strSqlId, SqlMapFactoryHelper.NEXACRO17);
	            sql.addParamObject("ds_Input", dsInput);             
	            dsDetail20 = (DataSet) db.query(sql).getResultObject();//조회프로시저 호출 메소드
...

구현체에는 이런식으로 넥사 내장 함수에 도움을 받아 Db에 연결함

넥사크로를 안쓴다면 JDBC에 DriverManager를 이용해 dB경로, ID, PW, 쿼리 등등을 넘겨서 받아야함

  con = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password");

                // 쿼리 실행
                String sql = "SELECT * FROM your_table WHERE condition = ?";
                pstmt = con.prepareStatement(sql);
                pstmt.setString(1, dsInput.getString(0, "your_condition_value")); // dsInput에서 값을 가져와 쿼리 파라미터 설정

                // 실행 후 결과 받기
                rs = pstmt.executeQuery();

                // 결과를 DataSet에 담기
                while (rs.next()) {
                    String columnValue = rs.getString("column_name");
                    // DataSet에 행 추가
                    dsDetail20.addRow();
                    dsDetail20.set(0, "column_name", columnValue);
                }

직관적이지 않아서 너무 불편..
spring이 좋아

profile
용용

0개의 댓글