Background Image

FORUM

?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7, 2012 Server R2 64bit
CUBRID Ver.
NHibernate for Cubrid
CUBRID TOOL Ver.

응용 환경(API)
.NET, Asp.NET, C#

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------


1. .NET 4.5 에서의 NHibernate 문제점

   - 이후 처리가 불가능하여 이후 어떤점이 문제가 발생할 지 알 수 없으나 .NET 4.0 에서 정상 작동하던 코드가 4.5 에서는 오류를 발생 시킵니다.

   - 샘플 Code : session.QueryOver<CODE_INOUT>().Where(t=>t.C_GRP_CD == "AUTHTYPE").List().ToList();

   - 오류 메시지 

     could not execute query

[ SELECT this_.c_grp_cd as c1_0_0_, this_.c_comn_cd as c2_0_0_, this_.c_comn_cd_nm as c3_0_0_ FROM tb_code this_ WHERE this_.c_grp_cd = ? ]

  Name:cp0 - Value:AUTHTYPE

[SQL: SELECT this_.c_grp_cd as c1_0_0_, this_.c_comn_cd as c2_0_0_, this_.c_comn_cd_nm as c3_0_0_ FROM tb_code this_ WHERE this_.c_grp_cd = ?]

   - 내용 : query 로 변경 중 cp0 에 해당하는 변수를 c_grp_cd 의 조건과 매칭시켜야 하는데 해당 처리중 오류가 발생했다고 보입니다.


2. .NET 4.0 에서 Nhibernate + TransactionScope 의 동시 처리 문제점

   - Nhibernate  ISession 개체의 Flush() 메소드와 System.Transactions.TransactionScope 를 동시에 사용했을 경우 발생하는 문제점 입니다.

   - 샘플 Code: 


      using (var scope = new TransactionScope())

      {

ISession session = ..............................;

             List<AA> test = session.QueryOver<AA>().Where(t => t.C_GRP_CD == "AUTHTYPE").List().ToList();

             foreach (AA dto in test)

             {

                 dto.C_OPT_1 = "OK_" + dto.C_OPT_1;

             }

             session.Flush();

             throw new Exception("test");

             scope.Complete();

      }


   - 위와 같은 코드에서, Oracle / MSSQL 과 같이 분산 트랜잭션이 지원되는(MSDTC 또는 OracleMTS)DB 에서는 

     session.Flush() 메소드가 실행되어도, 이후 scope.Complete() 를 실행하지 못하였기 때문에 DB 의 변경작업이 

     실패 합니다.


      허나, 큐브리드 Hibernate 모듈을 사용하여 CUBRID DB 에 접속 했을 경우, session.Flush() 가 존재하지 않는다면

     scope.Complete() 를 실행여부에 따라 트랜잭션이 정상 처리 됩니다

      이 때, session.Flush() 가 먼저 실행 되었다면 scope.Complete() 의 실행 여부와 관계 없이 DB 변경 작업이 수행되고

      이후 scope.Complete() 를 실행하지 못하고 오류가 발생 하더라도 DB Rollback 은 수행 되지 않습니다.


      즉, session.Flush() 가 먼저 실행되면 TransactionScope 를 무시한다고 볼 수 있겠습니다.


      코드에서 scope.Complete() 실행시에 오류를 발생시키지는 않지만 

      분산트랜잭션을 지원한다고 하는 CUBRID DB 와 TransactionScope 를 사용했을 때 예상 되는 동작이 아니게 되며 

      이에 대해 개발 코드의 변경이 필요 하게 되었습니다.


      

 위 두가지 문제점 에 대한 처리 방안을 문의 드립니다.


그럼 수고 하시고 빠른 답변 부탁 드립니다..





  • ?
    성진 2017.07.06 20:11

    안녕하세요. 큐브리드를 이용해주셔서 감사 합니다.

    1. .NET Framework 4.0/4.5 호환성 문제 테스트 결과 문제 없는 것으로 확인 되었습니다.


    아래와 같이 Nhibernate를 사용해서 demo DB Athlete테이블을 검색하는 경우 

    .NET 4.0/4.5 모두 정상 동작을 확인하였습니다

    CUBRID 9.3.6.0002 및 ADO.Net 드라이버는 9.3.0.0001을 사용했습니다.

     

     using (var session = sessionFactory.OpenSession())

    {

             List<Athlete> athlete = session.QueryOver<Athlete>().Where(t => t.nation_code == "LTU").List().ToList();

     

              Console.WriteLine(

                            string.Format("|{0}|{1}|{2}|{3}|{4}|",

                            AlignCenter(athlete[0].code.ToString(), 5),

                            AlignCenter(athlete[0].name, 30),

                            AlignCenter(athlete[0].gender, 5),

                            AlignCenter(athlete[0].nation_code, 5),

                            AlignCenter(athlete[0].athlete_event, 20))

              );

    }


    따라서, 사용하신 소스 및 환경에 문제가 있을 수 있으니 재확인 필요 하실 것 같습니다.


    2. ADO.Net 드라이버는 XA 지원하지 않습니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4262
3976 tomcat7 + cubrid 1 깽즈야 2012.07.27 90889
3975 원격접속이 안되네요????????? 2 Chris 2013.07.23 89527
3974 현재 연결은 원격 호스트에 의해 강제로 끊겼습니다 1 바람바람 2013.05.29 84859
3973 CUBRID 7.3 + zeroboard XE 관리자 로그인 에러 1 윤희서 2009.01.17 83638
3972 cub_master: Cannot bind local address... aborting.... Address already in use 4 박상현 2008.11.28 83556
3971 큐브리드 다운로더 오류 발생 5 file 차오이 2008.11.22 78469
3970 zeroboard XE 설치시 'database connect fail' error 4 윤희서 2009.01.16 78159
3969 Image 데이터타입 사용방법 3 AD 2008.11.25 73843
3968 clob 문의 1 김해영 2012.11.29 73006
3967 linux server 환경에서 php 버전은 어떤걸로 선택해야하는지. 1 거기 2008.11.30 66357
3966 델파이에서는 어떻게 사용할수 있을까요? 2 이상원 2008.11.29 65556
3965 if exists 조건 처리문? 2 콩이아부지 2013.03.06 63604
3964 update 쿼리를 이용한 시리얼 수정에 관하여 1 인경수 2008.11.27 63444
3963 큐브리드 2008 설치시 윈도우 서비스에 등록되지 않습니다. 3 file 진이 2008.11.22 63163
3962 CUBRID 7.3 + zeroboard XE 관리자 로그인 에러 1 윤희서 2009.01.17 62119
3961 큐브리드 maven repository 관련 문의 3 StoneHouse 2013.04.30 61467
3960 메니저에서 접속 안되는 오류 2 유나인 2013.08.16 61065
3959 .NET DB 제어를 위한 방법. 2 우페 2008.11.23 60874
3958 JDK가 두개 설치된 경우 선택적으로 JDK를 설정 할 수 있는 방법은 없는지요 1 GoFly 2008.11.28 60605
3957 데이터 이관시 소유자 변경 가능한가요??? 1 델몬트 2013.08.08 60059
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 199 Next
/ 199

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales